1

我有一个非常简单的配置,我想用它来服务多个单页应用程序

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)

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

作为附录,有没有比我尝试的方式更正确的方式来提供多个单页应用程序?

4

1 回答 1

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;
}

有关详细信息,请参阅此文档

于 2018-08-24T11:19:27.310 回答