问题描述
第一台nginx服务器配置了反向代理到一台kibana server,又配置了第二台nginx方向代理到第一台nginx服务器,发现不能在第二台nginx不能正常访问kibana,第一台nginx是正常访问的。
相关代码
第一台nginx反向代理配置
server_name: ng1
location / {
proxy_pass http://kibana_server:8009;
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
}
第二台nginx反向代理配置
server_name: ng2
location ^~ /kb/ {
proxy_redirect off;
proxy_pass http://ng1:80/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 600;
proxy_buffer_size 256k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_404;
}
期待第二台nginx能像第一台nginx一样正常访问到kibana server。
现在的错误是:浏览器访问 http://ng2/kb/ 结果url变成了:http://ng2/app/kibana 404
首先
404
是第二台nginx返回的,因为访问http://ng2/app/kibana
没有匹配到对应的location
, 原因猜测是访问http://ng2/kb/
会正常到kibana
,kibana
进行了跳转,跳转到/app/kibana
,url就会重定向为http://ng2/app/kibana
,所以出现上述错误。只要存在类似这样
location:/app/xxx
这样的跳转,基本没有办法设置。更好的办法是新建一个server
绑定在第二台nginx