是否可以使Nginx侦听不同的端口?


82

我用一个Linux Azure VM创建了一个Nginx,是否可以使nginx侦听不同的端口,以便当我更改端口号时,内容将有所不同。我发现如果在VM上创建两个或多个与HTTP相关的端口,则会发生冲突。有人可以帮我吗?

Answers:


89

是的。

您可能想要的是多个“服务器”节,每个节具有不同的端口,但可能(可能是)相同的server_name,在每个服务器中适当地提供“不同”内容,在每个服务器中可能具有不同的文档根目录。

完整的文档在这里: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/
}

良好的
移居

16
人不能做的烦人listen 80 81;不是吗?噢...
马特·弗莱彻2015年

@MattFletcher可以做类似的事情,请参阅Felix的评论:serverfault.com/a/755791/308219
PaulMest

182

您还可以执行以下操作:

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

2
这很棒。特别是,仅能在一个服务器上下文中更改服务器配置似乎比冒险更改一个服务器并使其他参数保持不变要好得多……
Aaron Sofaer 18'Jul

6
这不能回答@billcyz提出的问题。他要求提供不同的端口和不同的内容。此答案将为不同的端口提供相同的内容
艾萨克·萨瑟兰

@Krishnendu:“方便得多”吗?比什么更方便?这不能回答OP问题。在这种情况下,:80和:8000都指向相同的内容。OP明确询问“当我更改端口号时,内容将有所不同”。因此,克雷格·米斯克(Craig Miskell)的帖子比这个问题回答的要好得多
cedbeu

3
@cedbeu:是的,您对问题提出了正确的要求,克雷格·米斯克尔的答案更合适。我正在寻找另一个需要在多个端口上提供相同内容的解决方案,这正是我所需要的。再次对于给定的问题问其他答案更合适,对不起,如果我误导了某个人,从我这一方面来说这是一个诚实的错误。
Krishnendu

@Krishnendu没问题:)现在一切都已经澄清了
cedbeu
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.