Nginx反向代理的埠總是80的問題
阿新 • • 發佈:2019-01-04
今天自己玩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();
int port = 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 。然後檢查被代理後的埠資訊是否正確: