nginx 多个动态路径问题

nginx 多个动态路径问题

我们在一台运行 nginx 的 Linux 服务器上托管了 2 个 Angular 应用程序。我们希望在 2 个 Angular 应用程序中使用相同的主机名。假设当我浏览到http://example.com,它会使用其中一个应用程序,但如果我浏览到特定页面,它会使用另一个应用程序。我似乎无法让它工作。

因此我们有http://example.com(app1)提供动态内容

我们有http://example.com/app2http://example.com/app2_subpage由 app2 使用,并提供动态内容

这两个应用程序应该一起运行,因为它们是整个系统的不同服务,这就是为什么我们希望在同一台机器/DNS 下运行它们。

nginx 配置:

server {
        listen 80;
        server_name example.com;

        location ~ ^/(app2|app2_subpage)/ {

                root /path/to/app2;
                try_files $uri$args $uri$args/ /index.html;
        }

        location / {
                root /path/to/app1;
                try_files $uri$args $uri$args/ /index.html;
        }
}

因此 http://example.com(app1) 可以处理其所有动态内容,但是http://example.com/app2http://example.com/app2_subpage重定向回http://example.com(app1)。

看起来 app2 位置块的正则表达式不正确。在这种情况下应该如何配置?

答案1

您正在尝试加载http://example.com/app2,但正则表达式仅匹配http://example.com/app2/

尝试以下配置:

server {
    listen 80;
    server_name example.com;

    location ~ ^/(?:app2|app2_subpage) {
        root /path/to/app2;
        try_files $uri$args $uri$args/ /index.html;
    }

    location / {
        root /path/to/app1;
        try_files $uri$args $uri$args/ /index.html;
    }
}

相关内容