如何在不同的端口上运行多个Nginx实例

我想有几个Nginx实例在不同的端口上运行在我的服务器上(例如,一个用户在端口2345上运行Nginx,另一个用户在端口2346上运行)。 到目前为止,我已经成功地在指定的端口上编译和运行服务器。 然而,我遇到了一个奇怪的问题:如果我访问domain1.com:2345或domain2.com:2346我得到正确的(200)响应,但如果我访问domain1.com或domain2.com(不指定端口)我根本得不到答复。

任何帮助/线索搞清楚如何设置这将高度赞赏。

好的,我find了一个解决scheme。

我所做的是在端口80上以root身份运行一个“主”服务器。从那里,我在端口上为每个服务器添加服务器块,并向服务器发送proxy_pass指令。

  server { listen 80; charset utf-8; server_name domain1.com; location / { proxy_pass http://domain1.com:2345; } server { listen 80; charset utf-8; server_name domain2.com; location / { proxy_pass http://domain2.com:2346; } 

也许有一个更优雅的解决scheme,但这似乎运作良好。

如果不指定端口,Webbrowsers会自动select端口80。 从你的解释看来,这两个实例中没有一个在端口80上侦听。

您可能想要做的是使用虚拟主机从相同的nginx实例提供domain1.com和domain2.com。

如果你有可能为你的服务器有多个IP地址,你可以在端口80上运行几个nginx实例,因为你在listen指令中指定了不同的ip地址。

一个例子:

一审:

 server { listen abce:80 ... } 

另一方面

 server { listen fghi:80 ... } 

然而,如果你不仅仅是几个用户,这将会变成一件痛苦的事情。 也有多个公共IP地址可能很难得到。