Nginx:重定向时404错误,重定向地址端口与期望地址的端口不一致

遇到的问题

因为当用户无法直接访问我们的服务器与服务时,我们需要一个开放域名或IP地址,映射到我们的Nginx,并且端口不统一,开发地址为8989,我们的nginx为80,当我们的服务要进行重定向时,nginx默认获取的是自己的监听接口,也就是80端口,所以导致用户访问重定向的地址时报404错误,所以我们需要的时用户浏览器地址栏输入的域名或ip+端口(用户能真正访问到地址),所以经过自己研究与测试,得到以下的解决方案。

解决方案

Nginx的server或者localhost中加入proxy_set_header Host $http_host,用户浏览器地址栏输入的域名或ip+端口进行重定向

location /spring-boot {
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host; #这样配置会根据用户浏览器地址栏输入的域名或ip+端口进行重定向
    # proxy_redirect off;
	proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Client-IP $remote_addr;
    proxy_set_header X-Forwarded-Port $server_port;
    # 加websocket头部识别           
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_connect_timeout 60;
    proxy_read_timeout 600;
    proxy_pass  http://127.0.0.1:8080;
}

参数:$http_host #请求地址,即浏览器中你输入的地址(IP或域名);
可以参考往期的Nginx的参数大全

结果

重定向后,Response Header中,Location返回值的地址将会是用户浏览器地址栏输入的域名或ip+端口

扩展


#$http_host      #请求地址,即浏览器中你输入的地址(IP或域名)
proxy_set_header Host $http_host; #这样配置会根据用户浏览器地址栏输入的域名或ip+端口进行重定向

#$server_port    #服务器端口(Nginx监听的端口)
proxy_set_header Host $server_port; #这样配置会根据Nginx监听的端口进行重定向

#$proxy_port     #服务器真正访问的端口(你的应用部署在服务器上的端口)
proxy_set_header Host $proxy_port ; #这样配置会根据被代理服务的端口进行重定向,例如以上例子的8080

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值