1. 程式人生 > >Nginx反向代理的埠總是80的問題

Nginx反向代理的埠總是80的問題



今天自己玩nginx,發現Nginx反向代理的埠總是指向80,百思不得其解,後找到一網文解決了問題。

ginx反向代理關於埠的問題

posted on 2014-10-28 13:42 李克華

Nginx預設反向後的埠為80,因此存在被代理後的埠為80的問題,這就導致訪問出錯。主要原因在Nginx的配置檔案的host配置時沒有設定響應的埠。

相關配置檔案如下:

?
1 2 3 4 proxy_pass http://ime-server/ime-server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

如上,Host配置只有host,沒有對應的port,這就導致在被代理的地方取得錯誤的埠。本文以java為例:

?
1 2 3 4 5 String scheme = httpRequest.getScheme(); String serverName = httpRequest.getServerName(); intport = httpRequest.getServerPort(); //服務請求地址 String requestURI = scheme+
"://"+serverName+":"+port+"/ime-server/rest/"+serviceName+"/wmts";

  這時,取得的port為80,雖然nginx監聽的埠為9090。這個錯誤讓我很鬱悶。於是,修改nginx的配置檔案,將Host後面的改為 $host:$server_port即可,配置檔案如下:

?
1 2 3 4 5 6 7 8 location /ime-server { #root   html; #index  index.html index.htm; proxy_pass http://ime-server/ime-server; proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }

  重啟nginx,./nginx -s reload 。然後檢查被代理後的埠資訊是否正確: