我想基于一个路径将请求路由到两个不同的Angular应用程序。因此,当我请求http://example.com/admin时,http://example.com/client路由到一个应用程序,http://example.com/client路由到第二个应用程序。我有以下配置,但所有请求总是发送到nginx默认页。配置如下:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location /admin {
root /home/ubuntu/apps/admin/;
index index.html;
try_files $uri $uri/ /index.html?$args;
}
location /client {
root /home/ubuntu/apps/client;
index index.html;
try_files $uri $uri/ /index.html?$args;
}
}
/etc/nginx/sites-enabled
中没有其他配置文件,nginx.conf是Ubuntu默认的安装后配置文件。如有任何帮助,我们将不胜感激。
2条答案
按热度按时间bsxbgnwa1#
您使用了错误的
root
指令值。在这两个位置中,root
指令的正确值都是/home/ubuntu/apps
,这意味着您可以通过将一个root
指令移到server
块中,从而只使用它来简化配置。当然,您可以使用
alias
指令-但正如手册所述:当location与指令值的最后一部分匹配时...最好使用root指令。
另一个问题是您的
try_files
语句指向了错误的index.html
文件。例如:
请注意,
server_name _;
不是必需的-请参阅“服务器名称”文档。此外,
index index.html;
不一定是index
指令的默认值。dluptydi2#
看起来你不能使用多个
root
指令,而是需要使用alias
(Configure nginx with multiple locations with different root folders on subdomain)。这样,我仍然会得到404,直到我从index.html
中删除$args
。之后一切都正常工作(不要问花了多长时间才弄清楚)。工作配置: