gpt4 book ai didi

nginx - Elasticsearch Head插件无法通过Nginx反向代理工作

转载 作者:行者123 更新时间:2023-12-03 02:02:40 25 4
gpt4 key购买 nike

我有在其他服务器上运行安装的head插件的elasticsearch。我还为我的ES实例设置了一个Nginx反向代理。配置如下所示:

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

server {
listen 80;
server_name es.mydomain.net;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_redirect off;
proxy_pass http://127.0.0.1:9200;
}
}
}

点击链接 http://es.mydomain.net/可以正常工作,并且我得到200状态的响应。但是,如果我尝试点击链接 http://es.mydomain.net/_plugin/head/,我似乎会得到一个空白页。注意,如果我通过 http://SERVERIP:PORT/_plugin/head/直接访问头插件而没有反向代理,则页面加载良好。

编辑:

经过更多调试后,我在页面的控制台中看到 net::ERR_CONTENT_LENGTH_MISMATCH错误。在查看了nginx的日志后,看看错误是什么,我遇到了真正的罪魁祸首,这就是错误:
2015/05/27 16:26:48 [crit] 29765#0: *655 open() "/home/web/nginx/proxy_temp/6/0
0/0000000006" failed (13: Permission denied) while reading upstream, client: 10.
183.6.63, server: es.mydomain.com, request: "GET /_plugin/head/dist/app.js HTT
P/1.1", upstream: "http://127.0.0.1:9200/_plugin/head/dist/app.js", host: "es.my
domain.com", referrer: "http://es.mydomain.com/_plugin/head/"

我特别用Google搜索了它,看来这可能会发生,因为工作进程是 nobody,而它试图读取/写入的文件夹可能没有正确的权限。仍在调查中,但在找到答案时会进行更新

编辑2:删除不必要的信息,使问题更直接。

最佳答案

我能够设计出两种解决方案来解决权限问题,因此我将同时介绍它们。
关于我的nginx设置要了解的一件事是我没有使用sudo来安装它。我取消存档tar文件,对其进行配置并进行安装,因此它位于/ home / USERNAME / nginx /中。
问题是,启动nginx时在“nobody”下创建了一个工作进程,该进程随后试图在/ home / USERNAME / nginx / proxy_temp /中进行读取/写入,但没有权限。 Web上的解决方案说只是将chown nobody放入临时文件夹,但由于我在USERNAME的家中,因此这种解决方案在我的情况下并不适用。
解决方案1:
user USERNAME;添加到nginx.conf的顶部,以便它将以指定的用户名运行工作进程。这不再导致权限问题,因为USERNAME有权在所需的临时文件夹中进行读取/写入。
解决方案2:
将proxy_temp_path添加到服务器配置。这样,您可以为nobody进程指定一个文件夹,以在该文件夹中创建具有读/写权限的文件夹。注意,如果其他* _temp文件夹由您的nginx服务器使用,则可能仍然会遇到权限问题。

server {
listen 80;
server_name es.mydomain.net;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_redirect off;
proxy_pass http://127.0.0.1:9200;
proxy_temp_path /foo/bar/proxy_temp

}
}
我个人更喜欢解决方案1,因为它适用于所有服务器块,并且一旦conf文件变得更加复杂,我就不必担心其他* _temp文件夹。

关于nginx - Elasticsearch Head插件无法通过Nginx反向代理工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30470394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com