问题

暴露真实的端口号

目的

隐藏真实端口号

解决办法

在nginx中配置server侦听非80端口时,我们在访问时会在url中加入对应的端口号,如:http://xxx.xxx.xxx:8006/,但如果在nginx服务器前有另一台服务器作为用户首先访问的web服务器,这台服务器设置了端口转发,将80端口获得的请求转发到nginx中的对应端口中,如8006,这时用户使用的url是没有端口号,但nginx会自动增加端口号到url上,很可能导致用户访问失败,可以将location 中增加proxy_set_header Host $host,即可解决此问题

  1. server {
  2. listen 80;
  3. server_name localhost;
  4. proxy_set_header Host $host:$server_port; # 关键
  5. proxy_set_header X-Real-IP $remote_addr;
  6. proxy_set_header REMOTE-HOST $remote_addr;
  7. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  8. location / {
  9. proxy_pass http://127.0.0.1:8080/;
  10. }
  11. }

nginx监听非80端口时转发端口不正确问题

https://www.cnblogs.com/z-books/p/12410979.html