最常用的配置段是针对“文件系统”和“网络空间(URL)”特定位置的配置段。首先必须理解“文件系统”和“网络空间”这两个概念的区别。

1、文件系统是指操作系统所看见的磁盘视图。

比如:在 Unix 或 Linux 文件系统中,Apache 会被默认安装到 /usr/local/apache2 目录下。

2、相反,“网络空间”是网络被 Web 服务器发送及被客户在浏览器中所看到的视图。

所以,如果 <Location> 中的路径为 /dir/ ,那么在 Apache 采用默认安装路径的情况下,对应 Unix 或 Linux 文件系统的本地路径则为“/usr/local/apache2/htdocs/dir/”。由于网页可以从数据库或其他地方动态生成,因此,网络空间无须直接映射到文件系统。

Apache 和 Nginx 服务器的资源,在“文件系统空间”和“网络空间”的位置是怎么标识的呢?

1、Apache 服务器:

Apache 服务器定义资源在"文件系统中"的位置使用的指令是:

定义网页文件的根目录指令:   DocumentRoot

目录级别:“<Directiory file-path>...</Directiory>” 和 正则表达式版本 “<DirectoryMatch>”

文件级别:“<Files> ”和正则表达式版本“<FilesMatch>”

Apache 服务器标识资源的"网络空间"使用的指令是:

“<Location URL-path>...</Location> ”和 正则表达式版本 “<LocationMatch> ” 也称为:网络空间容器,做 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指令。