我试图用nginx反向代理来设置Kibana4 ,目前已经取得了部分成功。 这是我的configuration相关的Kibana:
server { listen 82; server_name ${HOSTNAME}; set $kibana kibana.docker; location /kibana4/ { proxy_pass http://$kibana:5601; proxy_set_header Host $host; proxy_set_header Referer ""; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_connect_timeout 150; proxy_send_timeout 100; proxy_read_timeout 100; proxy_buffers 16 64k; proxy_busy_buffers_size 64k; client_max_body_size 256k; client_body_buffer_size 128k; } }
在这种情况下,如果我去http://localhost:82/kibana4/我会得到未发现404
但是如果我用location /kibana4/replacelocation /kibana4/ ,那么一切正常 – 当然在这种情况下,URL变为http://localhost:82 。
我发现了一些与类似问题有关的其他主题,例如:
在web目录下运行nginx反向代理的sinatra程序[Kibana]
但那里描述的解决scheme不适合我。 我什至试过这个configuration:
server { listen 82; server_name ${HOSTNAME}; set $kibana kibana.docker; location /kibana4 { proxy_pass http://$kibana:5601/; proxy_set_header Host $host; proxy_set_header Referer ""; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_connect_timeout 150; proxy_send_timeout 100; proxy_read_timeout 100; proxy_buffers 16 64k; proxy_busy_buffers_size 64k; client_max_body_size 256k; client_body_buffer_size 128k; } }
它开始代理kibana.docker主机,但问题是所有的URL被重写到相同的kibana加载页面。 这会导致任何CSS或JavaScript文件无法正确加载。
我的问题是:有没有人知道这里可能是错的? 有没有人从不同于服务器根目录位置成功运行Kibana4? 我将不胜感激您的帮助。
谢谢HD。 对于你以前的post下面的问题 – 这是非常有启发性的。 它帮助我意识到了什么是问题。 我总是忘记位置部分也传递给代理,这就是为什么它必须重写我的情况。 这是什么正确的configuration应该是这样的:
location ~ ^/kibana4/(.*)$ { rewrite /kibana4/(.*) /$1 break; proxy_pass http://$kibana:5601; proxy_set_header Host $host; proxy_set_header Referer ""; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_connect_timeout 150; proxy_send_timeout 100; proxy_read_timeout 100; proxy_buffers 16 64k; proxy_busy_buffers_size 64k; client_max_body_size 256k; client_body_buffer_size 128k; }
这也解释了为什么如果没有rewrite部分的location /设置正常工作。 添加rewrite ,只有余下的部分被传递给代理,它的作用就像一个魅力。
再次感谢你,经验教训:-)
晚了,但我想在这里留下一个令人满意的解决scheme,因为我找不到它们。 从我的子目录进行代理的工作是在ProxyPass目录后添加一个斜线:
ProxyPass /kibana/ http://localhost:5601/ ProxyPassReverse /kibana/ http://localhost:5601/
看这里: