nGinx,服务于不同SPA的多个位置

时间:2018-08-24 10:44:41

标签: nginx single-page-application

我有一个非常简单的配置,可以用来为多个单页应用程序提供服务

server {
    root /var/www/;
    index index.html;

    location ~ ^/spa1/(.*?)$ {
        root /var/www/spa1/;
    }

    location ~ ^/spa2/(.*?)$ {
        root /var/www/spa2/;
    }

    error_page 404 /404.html;
}

/var/www/的目录结构如下:

www/
|- 404.html        (Generic 404)
|- index.html      (A plain html page with links to the apps)
|- spa1/   
   |- index.html   (the index page for single page app 1)
   |- spa1.js
   |- spa1.css
   |- static/      (folder containing spa1 static files)
|- spa2/
   |- index.html   (the index page for single page app 2)
   |- spa2.js
   |- spa2.css
   |- static/      (folder containing spa1 static files)

我的理解是,访问myserver.com/将返回index.html中的/var/www页,而访问myserver.com/spa1/myserver.com/spa2/将返回相应的{{1} }每个单页应用的页面。但是,情况似乎并非如此-相反,如果我访问index.html/spa1时,仅获得根/spa2页的访问,就好像它忽略了index.html指令对于每个应用

作为附录,是否有比我尝试的方式更正确的服务多个单页应用程序的方式?

1 个答案:

答案 0 :(得分:1)

我不明白为什么URI /spa1/会以您当前的配置返回文件/var/www/index.html。但是...

在所有三种情况下,root语句的值都应为/var/www。该文件的路径是通过将root语句的值与URI串联而得出的。

因此您的目录结构和URI计划应与以下更简单的配置一起使用:

server {
    root /var/www;
    index index.html;

    error_page 404 /404.html;
}

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