我有一个非常简单的配置,可以用来为多个单页应用程序提供服务
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
指令对于每个应用
作为附录,是否有比我尝试的方式更正确的服务多个单页应用程序的方式?
答案 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。