Как запустить Nginx на нескольких портах

Я пытаюсь настроить 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 работать на двух портах? Заранее спасибо!

2 ответов


ваша конфигурация выглядит нормально

Я думаю, проблема в следующем (поправьте меня, если я ошибаюсь):

  • у вас есть console.local.com слушаю порт 81,
  • это означает, что вы должны открыть его как http://console.local.com:81/
  • при доступе к нему как http://console.local.com/ (нет явного порта, поэтому по умолчанию используется порт 80) nginx проверит, заметит, что noting прослушивает порт 80 для этого имя_сервера, и следовательно, передаст запрос на сервер-блок по умолчанию. Поскольку сервер-блок defaut является первым (при отсутствии конфигурации для его изменения), вы попадаете в chat.local.com управляемость.

во всем likelyhood вы хотите изменить свой console.local.com слушать на порту 80 также с:

  • директива server_name в обоих serverblocks достаточно, чтобы различать запросы
  • это позволяет избежать необходимости добавлять: 81 в domainname в запросах все время

вы можете добавить оператор прослушивания 2 раза просто; как показано ниже
слушать 80;
слушай 81;

Это должно работать с nginx