Nginx反向代理關於端口的問題


Nginx默認反向后的端口為80,因此存在被代理后的端口為80的問題,這就導致訪問出錯。主要原因在Nginx的配置文件的host配置時沒有設置響應的端口。

相關配置文件如下:

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為例:

	String scheme = httpRequest.getScheme();
		String serverName = httpRequest.getServerName();
		int port = httpRequest.getServerPort();
		//服務請求地址
		String requestURI = scheme+"://"+serverName+":"+port+"/ime-server/rest/"+serviceName+"/wmts";

  這時,取得的port為80,雖然nginx監聽的端口為9090。這個錯誤讓我很郁悶。於是,修改nginx的配置文件,將Host后面的改為 $host:$server_port即可,配置文件如下:

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 。然后檢查被代理后的端口信息是否正確:

 


免責聲明!

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



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