Jusene's Blog

nginx location中root排障小记

字数统计: 384阅读时长: 1 min
2017/04/12 Share

需求

本次目的是在一个一个虚拟主机上存在两个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/的结构。

总结

虽说这只是个小故障,但是在不了解的情况下,排障就会进入死胡同,谨记基础的重要性。

CATALOG
  1. 1. 需求
  2. 2. 配置
  3. 3. 总结