子文件夹configuration – 2个应用程序在1域

在服务器上有两个单页面应用程序( App-OneApp-Two )。

要访问App-One ,请访问www.app-one.comApp-Two可在子文件夹中的相同域中访问: www.app-one.com/app-two

这两个应用程序都在服务器上的/var/www/文件夹中:

  • App-One文件夹/var/www/www.app-one.com
  • App-Two文件夹/var/www/app-two

问题

如果我在浏览器中inputwww.app-one.com/app-two ,它将redirect到www.app-one.com

如果我inputwww.app-one.com/app-two/index.html一切正常。

nginxconfiguration

 server { listen 80 default_server; listen [::]:80 default_server; server_name www.app-one.com app-one.com; # www rewrite if ($host !~* ^www\.) { rewrite ^(.*)$ http://www.app-one.com permanent; } # Logs access_log /var/log/nginx/www.app-one.com_access.log; error_log /var/log/nginx/www.app-one.com_error.log; # App-One index index.html; root /var/www/www.app-one.com; # App-One location / { try_files $uri $uri/ /index.html =404; } # App-Two location /app-two { alias /var/www/app-two; try_files $uri $uri/ /index.html =404; } } 

我试过了

很多位置filter( =~ ,…)和在app-two位置使用root而不是alias 。 但是如果我这样做的话, App-Two资源的相关链接指向了错误的URL。

这个configuration有什么问题?

您的try_files语句不正确。 try_files语句应该以默认的URI或错误代码结束,而不是两者。 请参阅此文档了解更多

应用程序的情况下,该声明应该是这样的:

 try_files $uri $uri/ /index.html; 

应用程序二的情况下,默认操作需要是完整的URI,而不仅仅是文件名:

 try_files $uri $uri/ /app-two/index.html;