从非标准端口上运行的nginx中删除端口号

时间:2017-08-10 07:19:18

标签: nginx proxy reverse-proxy

我有一个在端口9094上运行的nginx服务器,它侦听映射到etc/hosts文件中的localhost的服务器名称。

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 / login会将我直接重定向到我的登录页面..

当我在浏览器中运行www.myserver.local时,浏览器会显示错误消息,拒绝连接

2 个答案:

答案 0 :(得分:1)

浏览器使用这三个端口之一。

  1. 80(HTTP)
  2. 443(HTTPS)或
  3. 8080(HTTP替代)
  4. 因此,如果您想从浏览器访问非标准端口,则需要在URL中指定端口。否则它不会起作用。

答案 1 :(得分:1)

您必须更改配置以侦听端口80和重新启动nginx。配置应如下所示

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

使用netstat -tulpn | grep 80确保服务器正在侦听此端口