用于多节点应用程序的 Nginx 代理传递

用于多节点应用程序的 Nginx 代理传递

我们在一台服务器上的不同端口上运行多节点应用程序。我们尝试使用 nginx 作为反向代理,根据请求 URI 中字符串的匹配情况将请求路由到不同的应用程序。

我们正在使用location指令来匹配该字符串并相应地进行路由。如果我们返回与 location 指令中的字符串匹配的某个值,则它可以正常工作。但是一旦使用它,proxy_pass我们只会看到 402 错误。我们做错了什么?

我们的配置:

server {

                listen 443 ssl;
                listen [::]:443 ssl;
                server_name abc.xyz.co;
                include snippets/ssl-qaapp.xyz.co.conf;
                include snippets/ssl-params.conf;
                add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload; always';

location / 

{
        root /var/www/html/abc;
}

location ~ 3000 
{
#       proxy_pass https://127.0.0.1:3000;
        return 403;
        }
location ~ 3001 
{
#       proxy_pass https://127.0.0.1:3001;
        return 502;
       }
}

答案1

根据您的配置,您只有准确查询才能到达您的位置https://abc.xyz.co/3000或者https://abc.xyz.co/3001

当你输入匹配的位置时,nginx 会将你的请求代理到后端(=上游)的某个 URL 上https://127.0.0.1:3000或者https://127.0.0.1:3001
如果您收到 HTTP 应答代码 402,则意味着相应的后端返回了它。

换句话说,如果你查询https://abc.xyz.co/3000或者https://abc.xyz.co/3001从您的 nginx 服务器手动使用 wget 或 curl 您将获得相同的返回代码。

相关内容