Nginx搭建静态资源服务配置详解

第一种:单个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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值