2017-08-10 120 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备用)

所以,如果你想通过浏览器访问一个非标准的端口,您需要指定网址中的端口。否则它将无法工作。