繁体   English   中英

如何根据 nginx 中的 url 方案(ws:// 或 http://)为同一域使用不同的 proxy_pass 端口

[英]How to use diffrent proxy_pass ports for the same domain depending on the url scheme (ws:// or http://) in nginx

我有一个子域(比如 api.xyz.com)

我有两项服务 -

  1. 一个 HTTP REST API,(比如端口 3000)
  2. 网络套接字服务。 (比如在端口 5000 上)

我想使用相同的子域,但根据方案将其与两种服务一起使用

例如

如果我使用http://api.xyz.com --> 它 proxy_passes 到端口 3000

如果我使用ws://api.xyz.com --> 它 proxy_passes 到端口 5000

有人可以指出我正确的方向吗? (现在,我正在使用两个单独的子域 api.xyz.com 和 ws.xyz.com)

找到了解决方案。

server {

    server_name api.xyz.com;
    location / {
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;

            if ($http_upgrade = "websocket") {
                    add_header  X-Upstream  $upstream_addr;
                    proxy_pass  http://127.0.0.1:5000;
            }

            proxy_set_header   Host $http_host;
            proxy_pass         http://127.0.0.1:3000;
    }
 }

所以你必须检查标题和 proxy_pass 到适当的端口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM