nginx 单服务器配置和多服务器配置有区别吗?

nginx 单服务器配置和多服务器配置有区别吗?

我的 Web 服务器上有多个服务在不同端口上运行。这些服务通过 WebSocket 提供数据。

目前,每个服务在配置中都有自己的服务器nginx,如下所示:

server {
        listen 9031 ssl;
        location / {
                proxy_pass http://127.0.0.1:9002;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_read_timeout 86400;
        }
}

server {
        listen 8031 ssl;
        location / {
                proxy_pass http://127.0.0.1:8002;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_read_timeout 86400;
        }
}

server {
        listen 7031 ssl;
        location / {
                proxy_pass http://127.0.0.1:7002;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_read_timeout 86400;
        }
}

server {
        listen 6031 ssl;
        location / {
                proxy_pass http://127.0.0.1:6002;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_read_timeout 86400;
        }
}

server {
        listen 5031 ssl;
        location / {
                proxy_pass http://127.0.0.1:5002;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_read_timeout 86400;
        }
}

我还可以做这样的事情:

server {
        listen 9031 ssl;
        location /service1 {
                proxy_pass http://127.0.0.1:9002;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_read_timeout 86400;
        }

        location /service2 {
                proxy_pass http://127.0.0.1:8002;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_read_timeout 86400;
        }

        location /service3 {
                proxy_pass http://127.0.0.1:7002;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_read_timeout 86400;
        }

        ...
}

第二种方法看起来更好一些(而且一个不错的副作用是路由器上需要配置的端口更少)。但是我现在的问题是:有没有更好的方法?在性能、稳定性等方面有什么副作用吗?推荐的方法是什么,还是说使用哪种方法都一样?

答案1

我过去曾使用过这两种方法并且都是有效的配置。

在第二种方法中,请留意您响应给客户端的 URL 中是否缺少路径。您可能需要使用重写或类似方法。有几种方法可以解决此问题。

例如,如果我请求https://www.example.com/service1,则来自的响应http://127.0.0.1:9002需要包含路径/service1,以便任何后续请求都能到达预期的服务。

相关内容