Nginx 反向代理到另外一台Nginx服务器,不能正常工作

问题描述

第一台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

阅读 11k
1 个回答

首先 404 是第二台nginx返回的,因为访问http://ng2/app/kibana没有匹配到对应的location, 原因猜测是访问http://ng2/kb/会正常到kibana,kibana进行了跳转,跳转到/app/kibana,url就会重定向为http://ng2/app/kibana,所以出现上述错误。

只要存在类似这样location:/app/xxx这样的跳转,基本没有办法设置。更好的办法是新建一个server绑定在第二台nginx

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题