我的网站是一个包含其他应用的应用。 在主应用中,我将使用iframe加载其他应用。
主应用程序在域根目录提供:http://example.com 其他应用程序在/ apps路径下提供:
此外,应用程序是在Polymer中开发的,因此有客户端导航。我确保客户端没有使用/ apps路径正确命中NGINX服务器,但这也意味着对于http://example.com/view1这样的网址,它应该重定向到主应用程序的index.html。对于像http://example.com/apps/app-b/view1这样的网址,它应该重定向到app-b的index.html。
我正在尝试配置NGINX来为这些静态应用程序提供服务。
server {
listen 80;
server_name example.com;
root /var/www/example.com/main-app;
index index.html;
try_files $uri $uri/index.html /index.html;
location ~ /apps/([a-z-]+) {
alias /var/www/example.com/apps/$1;
}
}
使用上面的配置,我让主应用程序使用正确的重定向到/ view1路径的index.html。例如。
但我对子应用程序有403禁用错误。
禁止使用“/var/www/example.com/apps/app-b”的目录索引, 客户端:127.0.0.1,server:example.com,请求:“GET / apps / app-b /
我尝试了其他配置但没有成功(无限重定向导致/index.html/index.html/index.html ...)。
我确定文件系统权限所有目录都是755,文件是644。
我不知道它为什么要尝试做一个目录索引。 任何帮助表示赞赏。
答案 0 :(得分:0)
将alias
与正则表达式location
一起使用时,需要构建文件的完整路径。目前,您只捕获第二个路径元素。
话虽如此,您实际上并不需要在此使用alias
,因为可以使用root
指令。
location /apps/ {
root /var/www/example.com;
}
有关详细信息,请参阅this document。