静态应用的{NGIX服务器配置

时间:2017-08-25 09:39:46

标签: nginx nginx-location

我的网站是一个包含其他应用的应用。 在主应用中,我将使用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。

我不知道它为什么要尝试做一个目录索引。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

alias与正则表达式location一起使用时,需要构建文件的完整路径。目前,您只捕获第二个路径元素。

话虽如此,您实际上并不需要在此使用alias,因为可以使用root指令。

location /apps/ {
    root /var/www/example.com;
}

有关详细信息,请参阅this document