关于nginx没有跳转到upstream地址的解决
![star](https://csdnimg.cn/release/downloadcmsfe/public/img/star.98a08eaa.png)
在使用Nginx作为反向代理服务器时,有时可能会遇到一个问题:当客户端发起请求时,Nginx没有正确地将请求转发到上游服务器(upstream),而是直接暴露了upstream的内部地址,导致404错误。这种情况通常发生在前端应用(如Tomcat)试图进行页面重定向时,由于Nginx的配置问题,后端代码无法获取到前端的实际端口号,从而产生跳转失败。本文将深入探讨这个问题,并提供解决方案。 我们需要了解Nginx的upstream配置。在给出的例子中,Nginx配置了一个名为`tomcat`的upstream,包含了两个后端服务器的地址:192.168.11.172:8061和192.168.11.172:8062,同时启用了`ip_hash`策略,确保来自同一客户端的请求会被分发到相同的后端服务器。 ```nginx upstream tomcat { server 192.168.11.172:8061; server 192.168.11.172:8062; ip_hash; } ``` 接着,Nginx的server块配置了对外的监听端口8060,将所有请求通过`proxy_pass`指令转发到`tomcat`这个upstream: ```nginx server { listen 8060; server_name www.example.com; location / { proxy_pass http://tomcat; # ...其他配置 } } ``` 问题在于,后端Java代码使用`response.sendRedirect()`进行重定向时,根据`request.getServerPort()`返回的值(默认为80)构建重定向URL。由于Nginx监听的端口不是80,因此生成的URL不正确,导致重定向失败。 为了解决这个问题,我们需要修改Nginx的配置,确保在转发请求时,后端能够接收到正确的端口号信息。这可以通过在`proxy_set_header`中添加端口号实现: ```nginx location / { proxy_pass http://tomcat; proxy_set_header Host $host:$proxy_port; # ...其他配置 } ``` 添加`proxy_set_header Host $host:$proxy_port;`后,Nginx会将实际的监听端口号(8060)传递给后端,使得后端在构建重定向URL时能够使用正确的端口号。 总结一下,当Nginx未正确跳转到upstream地址时,可能的原因是后端代码在构建重定向URL时使用了默认的80端口。通过在Nginx配置中添加`proxy_set_header Host $host:$proxy_port;`,可以确保后端获取到正确的前端端口号,从而修复跳转失败的问题。这个解决方案不仅适用于Java应用,也可以推广到其他依赖端口信息进行重定向的后端服务。理解并正确配置Nginx的代理设置对于优化服务器架构和提升用户体验至关重要。
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![thumb](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/release/download_crawler_static/12899237/bg1.jpg)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 3
- 资源: 899
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)
- 1
- 2
前往页