如何在多个端口上运行Nginx

我正在尝试在两个端口上configuration相同的实例,例如在端口80和端口81上的nginx,但目前还没有运气。 这是我正在尝试做的一个例子:

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在两个端口上运行? 提前致谢!

你的配置看起来不错

我认为问题是这样的(纠正我,如果我错了):

  • 你有console.local.com监听端口81,
  • 这意味着你需要访问它http://console.local.com:81/
  • 当你访问它作为http://console.local.com/ (没有明确的端口,所以默认为端口80)nginx将检查,注意到注意到正在监听该端口80 server_name,因此将传递请求到默认服务器块。 由于默认的服务器块是第一个(在没有配置来改变它的情况下),你最终在chat.local.com处理。

在所有可能的情况下,您想要更改您的console.local.com以便在端口80上进行监听,因为:

  • 两个serverblock中的server_name指令足以区分请求
  • 这样可以避免您必须始终在请求中将:81添加到域名中

你可以添加2次简单的监听语句; 如下所示
听80;
听81;

这应该与nginx一起工作