2017-08-10 74 views
-1

我有一個運行在端口9094上的nginx服務器,它偵聽映射到etc/hosts文件中的localhost的服務器名稱。從非標準端口上運行的nginx中刪除端口號

server { 
     listen 9094; 
     listen [::]:9094; 
     server_name www.myserver.local; 
     port_in_redirect off; 
     server_name_in_redirect off; 

     proxy_set_header Host $host:$server_port; 

     location /portal/foreman/ { 
       rewrite ^/portal/foreman(.*)$ $1 break; 
       proxy_pass http://localhost:3001; 
       proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     } 

     location /api/ { 
       rewrite ^/api(.*)$ $1 break; 
       proxy_pass http://127.0.0.1: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; 
     } 

     location /login { 
       rewrite ^/login(.*)/$ /$1 permanent; 
       proxy_pass http://localhost:3000; 
       proxy_redirect off; 
     proxy_set_header Host $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     } 
} 

在我/etc/hosts文件我有以下條目

127.0.0.1 www.myserver.local 

當我進入www.myserver.local:9094一切工作像往常一樣,與重定向。有人可以幫助我的方式,我可以刪除端口號和東西仍然工作,例如:www.myserver.local /登錄將重定向我直接到我的登錄頁面..

當我運行www.myserver.local我的瀏覽器,瀏覽器給出錯誤說,拒絕連接

+0

瀏覽器試圖連接到端口80或443要使用非標準的端口上,則需要在URL中指定端口號。要使用沒有端口號的URL,服務器必須在標準端口(80或443)上偵聽。 –

+0

謝謝你..想出了一些閱讀..謝謝.. –

回答

1

您必須更改您的配置以偵聽端口80並重新啓動nginx。這個配置應該如下

server { 
     listen 80; 
     listen [::]:80; 

使用netstat -tulpn | grep 80,以確保服務器監聽此端口

1

瀏覽器使用這三個端口之一。

  1. 80(HTTP)
  2. 443(HTTPS)或
  3. 8080(HTTP備用)

所以,如果你想通過瀏覽器訪問一個非標準的端口,您需要指定網址中的端口。否則它將無法工作。