Можно ли заставить Nginx слушать разные порты?

82

Я создал один Nginx с одной виртуальной машиной Linux Azure. Можно ли заставить nginx прослушивать разные порты, чтобы при изменении номера порта содержимое было другим. Я обнаружил, что возникнет коллизия, если я создам два или более портов, связанных с HTTP на ВМ. Кто-нибудь может мне помочь с этим?

billcyz
источник

Ответы:

90

Да, это.

Что вам, вероятно, нужно - это несколько «серверных» разделов, каждый из которых имеет свой порт, но, возможно, (вероятно?) Одно и то же имя_сервера, соответственно обслуживая «разное» содержимое внутри каждого, возможно, с различным корнем документа на каждом сервере.

Полная документация здесь: http://nginx.org/en/docs/http/server_names.html

Пример:

server {
    listen       80;
    server_name  example.org  www.example.org;
    root         /var/www/port80/
}

server {
    listen       81;
    server_name  example.org  www.example.org;
    root         /var/www/port81/
}
Крейг Мискелл
источник
Хорошее объяснение
billcyz
16
Раздражает, что никто не может сделать listen 80 81;, не так ли? О, хорошо ...
Мэтт Флетчер
@MattFletcher Можно сделать нечто подобное, см. Комментарий Феликса: serverfault.com/a/755791/308219
PaulMest
182

Вы также можете сделать следующее:

server {
    listen 80;
    listen 8000;
    server_name example.org;
    root /var/www/;
}
Феликс
источник
2
Это здорово. В частности, возможность изменить конфигурацию сервера только в одном контексте сервера кажется гораздо лучше, чем рискнуть изменить один и оставить другой без изменений ...
Аарон Соуфер,
6
Это не отвечает на вопрос, заданный @billcyz. Он попросил разные порты и разный контент . Этот ответ дает разные порты с одинаковым контентом .
Исаак Сазерленд
@Krishnendu: "намного удобнее"? удобнее чем что? Это не отвечает на вопрос ОП. В этом случае и: 80, и: 8000 указывают на один и тот же контент. ОП явно спросил: «Когда я изменю номер порта, содержимое будет другим». Итак, сообщение от Крейга Мискелла на этот вопрос отвечает гораздо лучше, чем этот
cedbeu
3
@cedbeu: Да, вы правы в контексте поставленного вопроса. Ответ Крейга Мискелла более уместен. Я искал другое решение, где мне нужно обслуживать один и тот же контент на нескольких портах, это было именно то, что мне было нужно. Опять же, для данного вопроса более уместно задавать другие ответы. Извините, если я ввел кого-то в заблуждение. Это была моя ошибка.
Кришненду
@Krishnendu нет проблем :) теперь все прояснилось
cedbeu