在 Nginx 反向代理后面托管多个应用程序

在 Nginx 反向代理后面托管多个应用程序

我们正在转向一种为多种用例创建多个应用实例的方法。在整个堆栈的前面,我们使用 Nginx 作为反向代理。

我们这样定义它:

    location /admin {
        rewrite /admin/(.*) /admin/$1  break;
        proxy_pass http://localhost:3000;
        proxy_set_header Connection "";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }

    location /client {
        rewrite /client/(.*) /client/$1  break;
        proxy_pass http://localhost:3001;
        proxy_set_header Connection "";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
    }

我遇到的问题是 - 任何 URL 规范化都会删除/app。因此,当我浏览https://localhost/admin/page1来自前端的所有请求(包括静态文件)时https://localhost/page1

我想要实现的是,当app存在段时,所有请求都将到达相应的应用服务器。包括静态内容和 websockets 请求。

答案1

您的应用程序会在其生成的 HTML 代码中生成指向静态资源的链接。

因此,您必须配置应用程序的基本 URL 以匹配代理案例中的位置。

您的配置中的语句rewrite是不需要的。它们实际上不执行任何操作。

相关内容