我想在我的服务器上使用不同的端口运行多个 Nginx 实例(例如,一个用户在端口 2345 上运行 Nginx,另一个用户在端口 2346 上运行)。到目前为止,我已经成功在指定端口上编译和运行服务器。但是,我遇到了一个奇怪的问题:如果我访问 domain1.com:2345 或 domain2.com:2346,我会得到正确的 (200) 响应,但如果我访问 domain1.com 或 domain2.com(未指定端口),我根本得不到任何响应。
如能提供任何有关如何进行设置的帮助/线索,我们将不胜感激。
答案1
好的,我找到了解决方案。
我所做的是在端口 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;
}
也许有更优雅的解决方案,但这似乎效果很好。
答案2
如果您不指定端口,Web浏览器会自动选择端口 80。根据您的解释,似乎两个实例都没有监听端口 80。
你可能想要做的是从同一个 nginx 实例中同时提供 domain1.com 和 domain2.com 服务,使用虚拟主机。
答案3
如果您的服务器可以拥有多个 IP 地址,则可以在端口 80 上运行多个 nginx 实例,前提是您在指令中指定不同的 IP 地址listen
。
一个例子:
首先:
server {
listen a.b.c.e:80
...
}
另一方面
server {
listen f.g.h.i:80
...
}
然而,如果你有多个用户,这将会很麻烦。而且多个公共 IP 地址可能很难获得。