需求
本次目的是在一个一个虚拟主机上存在两个web程序入口,当访问到特定的url目录结构的时候需要进入另一个web程序的入口进行执行,也就是说:
同时存在web程序入口的目录为:
/web/htdocs/application/…
/web/htdocs/api/…
如果我们的url访问 www.datapi.com 的时候进入/web/htdocs/application/执行程序,访问 www.datapi.com/api/ 的时候需要进入/web/htdocs/api/执行程序。
配置
root的配置段可以在http、server、location、if中配置
1 | server { |
2 | listen 80; |
3 | index index.html index.php; |
4 | root /web/htdocs/application; |
5 | |
6 | location /api/ { |
7 | root /web/htdocs/api/; |
8 | } |
9 | } |
然而却一直是404错误,web服务器是服务器filesystem与url的映射,所以我们访问 www.datapi.com/api/ ,其实在后端实际访问的目录层次应该是 /web/htdocs/api/api/ 的结构,所以一直会报这个错误。
如果需要在这个目录下访问,我们可以使用alias
alias的配置段必须在location中
1 | server { |
2 | listen 80; |
3 | index index.html index.php; |
4 | root /web/htdocs/application; |
5 | |
6 | location /api/ { |
7 | alias /web/htdocs/api/; |
8 | } |
9 | } |
这样的层次结构就是我们所需要的,我们访问 www.datapi.com/api/ ,alias就将别名访问目录/web/htdocs/api/的结构。
总结
虽说这只是个小故障,但是在不了解的情况下,排障就会进入死胡同,谨记基础的重要性。