如何在多个端口上运行Nginx

如何在多个端口上运行Nginx,nginx,Nginx,我正在尝试在两个具有相同实例的端口上配置nginx,例如在端口80和端口81上,但到目前为止运气不佳。下面是我正在尝试做的一个例子: worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_

我正在尝试在两个具有相同实例的端口上配置nginx,例如在端口80和端口81上,但到目前为止运气不佳。下面是我正在尝试做的一个例子:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen  80;
        server_name  chat.local.com;

        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_set_header Host $host;
            proxy_buffering off;

        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

    server {
        listen  81;
        server_name  console.local.com;
        location / {
            proxy_pass http://127.0.0.1:8888;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_set_header Host $host;
            proxy_buffering off;
        }
    }
}
当我尝试运行console.local.com时,它会显示chat.local.com中的内容。有没有办法让nginx在两个端口上运行?提前谢谢

您的配置看起来正常

我认为问题在于(如果我错了,请纠正我):

  • 您让console.local.com监听端口81
  • 这意味着您需要以
  • 当您作为访问它时(没有显式端口,因此默认为端口80) nginx将进行检查,注意nothing正在端口80上侦听该服务器名称,因此会将请求传递给默认服务器块。由于defaut服务器块是第一个(在没有更改它的配置的情况下),因此您最终将进入chat.local.com处理
很可能您希望将您的console.local.com更改为在端口80上侦听,因为:

  • 两个serverblocks中的server_name指令足以区分请求
  • 这避免了您必须始终在请求中向域名添加:81

您可以添加两次简单的侦听语句;如下
听80;
听81


这应该适用于nginx

Hi Cobaco,我完全忘记了需要使用端口81访问页面这一点。谢谢你指出这一点。