Nginx反向代理监听非80端口造成的端口丢失解决方案

2024-03-07   116 次阅读


文章标题图片: 来自 Pexels 上 Suta Rahady 的图片

1.环境

  • nginx version:1.14.0
  • OS:CentOS release 6.10 (Final)

2.问题描述

  • nginx反向代理,当设置nginx监听80端口时转发到后端的6080端口,请求没有问题。
  • 但若设置为监听其他端口时,比如:3355,就一直跳转不正常,应该是在这个重定向的过程中端口丢失了

3.解决方案

#添加这行参数:proxy_set_header Host $host:$server_port;
upstream        cluster_gathersvc {
                #ip_hash;
                server  192.168.110.95:6080;
                server  192.168.110.96:6080;
}


server {
    listen       3355;
    server_name  192.168.10.191;

    access_log  /nginx/log/access_192.168.110.95-96.log  main;

    location / {
        proxy_pass      http://cluster_gathersvc/;
        proxy_redirect off;
        proxy_set_header Host $host:$server_port; # 这里是重点,这样配置才不会丢失端口
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_504 http_404;
    }
}

脑无理想 枉活一世