我们在一台运行 nginx 的 Linux 服务器上托管了 2 个 Angular 应用程序。我们希望在 2 个 Angular 应用程序中使用相同的主机名。假设当我浏览到http://example.com,它会使用其中一个应用程序,但如果我浏览到特定页面,它会使用另一个应用程序。我似乎无法让它工作。
因此我们有http://example.com(app1)提供动态内容
,
我们有http://example.com/app2和http://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/app2和http://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;
}
}