在服务器上有两个单页面应用程序( App-One和App-Two )。
要访问App-One ,请访问www.app-one.com 。 App-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一切正常。
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;