第一种:单个server,root配置根目录
nginx配置文件中,server模块默认配置了location,如下:
server {
listen 8088;//server的监听端口
server_name localhost,192.168.121.140;//server的ip地址
location / {
root html;
index index.html index.htm;
}
}
上述location的配置是“/”,当我们访问192.168.121.140:8088/ 或 192.168.121.140:8088,nginx会去html(root 配置项)目录下去找index.html或者index.htm(index配置项)。
1、如果我们修改root的值为
location / {
root html/main;
index index.html index.htm;
}
那么访问192.168.121.140:8088/ 或 192.168.121.140:8088,nginx会到html/main目录下找index.html或index.htm。
2、如果我们修改location为
location /index {
root html/main;
index index.html index.htm;
}
那么访问路径改为192.168.121.140:8088/index 或 192.168.121.140:8088/index/,nginx会到html/main/index目录下找index.html或index.htm。
3、如果在目录html/main/index下还有一个文件夹index2,该文件夹下有index2.html。那么采用下面的配置
location /index {
root html/main;
index index.html index.htm;
}
如果我们访问到index2.html,那么我们的访问地址为192.168.121.140:8088/index/index2/index2.html。
4、对于下面的配置
location / {
root html/main;
index index.html index.htm;
}
如果我们把图片、文档、视频文件放到html/main目录下,我们的访问地址192.168.121.140:8088/+文件名。
5、对于精确匹配的理解:如果有两个location配置如下
//第一种 全局默认匹配
location / {
root html/main;
index index.html index.htm;
}
//第二种 匹配index
location /index {
root html/main;
index index.html index.htm;
}
(1)当访问地址为192.168.121.140:8088/index,匹配到第二种location
(2)当访问地址为192.168.121.140:8088/,匹配到第一种location
(3)当访问地址为192.168.121.140:8088/main,匹配到第一个location,因为没有location是main的。
第二种:单个server,alias配置根目录
除了上面的root配置文件的目录,还有个alias配置,其和root的区别在于nginx搜索文件时是否需要加上location目录。
//nginx搜索文件的目录为html/main/index/index.html
location /index {
root html/main;
index index.html index.htm;
}
//nginx搜索文件的目录为html/main/index.html
location /index {
alias html/main;
index index.html index.htm;
}
第三种:多个server,root或alias配置根目录
在nginx配置中,一个http模块可以配置多个server,也就是说我们可以配置多个服务。
server {
listen 8088;//server的监听端口
server_name localhost,192.168.121.140;//server的ip地址
location / {
root html;
index index.html index.htm;
}
}
server {
listen 8000;//server的监听端口
server_name localhost,192.168.121.140;//server的ip地址
location / {
root html;
index index2.html index2.htm;
}
}
上面的两个server配置,只有端口和index配置不一样,当访问地址的端口为8088,请求到第一个server。当访问地址的端口为8000,请求到第二个server。
**小结:**如果一个server模块,有多个location模块,nginx的匹配原则是精确匹配优先。对于静态文件,如果使用root配置文件根目录,nginx搜索文件的路径为root + /location + /index。如果使用alias配置文件根目录,Nginx搜索文件的路径为alias+/index。