10

我正在尝试在具有相同实例的两个端口上配置 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 在两个端口上运行?提前致谢!

4

2 回答 2

7

你的配置看起来不错

我认为问题是这样的(如果我错了,请纠正我):

  • 你有 console.local.com 在端口 81 上监听,
  • 这意味着您需要以http://console.local.com:81/的身份访问它
  • 当您以http://console.local.com/访问它时 (没有明确的端口,因此默认为端口 80),nginx 将检查,注意注意正在侦听该 server_name 的端口 80,因此会将请求传递给默认值服务器块。由于默认服务器块是第一个(在没有配置来更改它的情况下),您最终会在 chat.local.com 处理。

您很可能希望更改您的 console.local.com 以侦听端口 80,因为:

  • 两个服务器块中的 server_name 指令足以区分请求
  • 这样可以避免您一直在请求中将 :81 添加到域名中
于 2013-04-25T07:07:45.690 回答
4

您可以简单地添加2次listen语句;像下面
听80;
听 81;

这应该适用于 nginx

于 2016-04-08T13:41:27.747 回答