最常用的配置段是针对“文件系统”和“网络空间(URL)”特定位置的配置段。首先必须理解“文件系统”和“网络空间”这两个概念的区别。
1、文件系统是指操作系统所看见的磁盘视图。
比如:在 Unix 或 Linux 文件系统中,Apache 会被默认安装到 /usr/local/apache2 目录下。
2、相反,“网络空间”是网络被 Web 服务器发送及被客户在浏览器中所看到的视图。
所以,如果 中的路径为 /dir/ ,那么在 Apache 采用默认安装路径的情况下,对应 Unix 或 Linux 文件系统的本地路径则为“/usr/local/apache2/htdocs/dir/”。由于网页可以从数据库或其他地方动态生成,因此,网络空间无须直接映射到文件系统。
Apache 和 Nginx 服务器的资源,在“文件系统空间”和“网络空间”的位置是怎么标识的呢?
1、Apache 服务器:
Apache 服务器定义资源在"文件系统中"的位置使用的指令是:
定义网页文件的根目录指令: DocumentRoot
目录级别:“...” 和 正则表达式版本 “”
文件级别:“ ”和正则表达式版本“”
Apache 服务器标识资源的"网络空间"使用的指令是:
“... ”和 正则表达式版本 “ ” 也称为:网络空间容器,做 uri 地址匹配的。
2、Nginx 服务器:
定义网页文件的根目录指令: root path ------> 也是定义资源在文件系统中的位置。
Nginx 标识资源的“网络空间”使用的指令是:location [ =|~|~*|^~|@ ] /uri/ { ... } -----> 做 uri 地址匹配
location配置:
location 表示匹配到不同资源时候,它对应的属性定义的。 在server 段中至少有一个location 段,可以有多个。对于特定的请求,一旦nginx匹配一个location来处理。那么这个请求的响应内容就会由这个location块中的指令决定。location / {
......
}
假设一个请求http://www.abc.cn,我们假设server_name已经匹配www.abc.cn,那么"location /"指令将捕获这个请求。location / {
root html;
index index.html index.htm;
}
在这个例子中文档根(doucument root)位于html/目录。根据nginx的安装目录/usr/local/nginx,这个"location”的完整路径是:/usr/local/nginx/html 。假设一个请求访问位于/blog/includes/styles.css文件同时没有别的location块匹配,那么nginx会用位于文件系的/usr/local/nginx/html/blog/includes/styles.css响应。当然你也可以用绝对路径设置root指令。