nginx監聽端口轉發到后端改變的問題


nginx配置:
server {     listen 80;     server_name localhost;     location / {         proxy_pass http://192.168.1.100:8080;         proxy_set_header Host $host;         proxy_set_header X-Real-IP $remote_addr;         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;     } }

 

以上是nginx默認監聽端口號為80的情況,由於公司系統是內網應用,用戶已經將鏈接收藏起來了,收藏后的地址是之前的單台tomcat的8080端口,為了不影響他們的操作習慣所以決定讓nginx繼續監聽8080端口,保持對外端口相同。

於是乎,我便想當然的把nginx的端口號改成了8080,把tomcat的端口改為了8081。改后的nginx配置如下:

server {     listen 8080;     server_name localhost;     location / {         proxy_pass http://192.168.1.100:8081;         proxy_set_header Host $host;         proxy_set_header X-Real-IP $remote_addr;         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;     } }

 

改完之后,重啟測試發現問題了:

當訪問http://localhost:8080后,瀏覽器自動跳轉到了 http://localhost去了

這是為什么呢?????

原來,如果nginx的監聽端口不是默認的80端口,改為其他非80端口后,后端服務tomcat中的request.getServerPort()方法無法獲得正確的端口號,仍然返回到80端口。在response.sendRedirect()時,客戶端可能無法獲得正確的重定向URL。

所以正確的配置:

server {     listen 8080;     server_name localhost;     location / {         proxy_pass http://192.168.1.100:8081;         proxy_set_header Host $host:8080;         proxy_set_header X-Real-IP $remote_addr;         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;     } }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM