Linux-13 nginx-Location语法

dns解析流程 

1.首先用户输入一段url,在浏览器  www.oldboyedu.com 
2.(dns解析的第一步)浏览器会首先在你的机器上,寻找一个hosts文件,这是本地测试dns解析文件
2.(第二步)如果hosts文件未指定解析记录,浏览器就去机器的dns缓存中寻找解析记录  LDNS(local dns缓存)
3.(第三步)如果缓存也没有记录,去指定的dns服务器中(手动配置,linux底下/etc/reslove.),去网络中寻找解析记录
/etc/resolv.conf
写入两条dns记录
主dns服务器  nameserver  x.x.x.x
备dns服务器  nameserver  x.x.x.x 

linux解析dns的命令
nslookup(nameserver lookup  域名服务器查找 )

4.dns服务器会将查找到的ip和域名对应的记录,返回给浏览器,浏览器就知道访问的ip服务器是谁了
5.此时操作系统会将这条解析记录,写入到本地dns缓存中,LDNS


#状态码
300系列就是  你访问的url经过重定向redirect,  baidu.com   >  diaoyu.baidu.com 

  

Location语法优先级排列

复制代码
匹配符 匹配规则 优先级
=    精确匹配    1
^~    以某个字符串开头    2
~    区分大小写的正则匹配    3
~*    不区分大小写的正则匹配    4
!~    区分大小写不匹配的正则    5
!~*    不区分大小写不匹配的正则    6
/    通用匹配,任何请求都会匹配到    7
复制代码

location匹配顺序

1.location = / {
  我是代码1,精确匹配
} 
#  www.cj.com/

2.location ^~ /images/ {
我是代码2
}  匹配常规串,不做正则检查
# www.cj.com/images/


3.location ~* .(gif|jpg|jpeg) {
我是代码3
} 正则匹配
#www.cj.com/xxx.gif  
#www.cj.com/xxx.jpg 
#www.cj.com/xxx.gif
#www.cj.com/xxx.jpeg

 
4. location /av/ {
我是代码4
}  匹配常规字符,有正则优先正则
 www.cj.com/av/xx资源


#如果你谁都没匹配到的话,默认走/,走网页根目录,优先级最低

5.location / {
我是代码5
}  所有的location都不匹配后,默认匹配

  

nginx.conf配置文件实例

复制代码
server {
    listen 80;
    server_name pythonav.cn;

    #优先级1,精确匹配,根路径
    location =/ {
        return 400;
    }

    #优先级2,以某个字符串开头,以av开头的,优先匹配这里,区分大小写
    location ^~ /av {
       root /data/av/;
    }

    #优先级3,区分大小写的正则匹配,匹配/media*****路径
    location ~ /media {
          alias /data/static/;
    }

    #优先级4 ,不区分大小写的正则匹配,所有的****.jpg|gif|png 都走这里
    location ~* .*.(jpg|gif|png|js|css)$ {
       root  /data/av/;
        }

    #优先7,通用匹配
    location / {
        return 403;
    }
}
复制代码

nginx语法之root和alias区别实战

复制代码
nginx指定文件路径有root和alias两种方法
区别在方法和作用域:

方法:

root
语法  root  路径;
默认值 root   html;
配置块  http{}   server {}   location{}

alias
语法: alias  路径
配置块  location{}


root和alias区别在nginx如何解释location后面的url,这会使得两者分别以不同的方式讲请求映射到服务器文件上

root参数是root路径+location位置

root实例:

    location ^~ /av {
        root /data/av;   注意这里可有可无结尾的   /
    }
请求url是pythonav.cn/av/index.html时
web服务器会返回服务器上的/data/av/av/index.html

root实例2:
location ~* .*.(jpg|gif|png|js|css)$ {
       root  /data/av/;
}

请求url是pythonav.cn/girl.gif时
web服务器会返回服务器上的/data/static/girl.gif




alias实例:
alias参数是使用alias路径替换location路径
alias是一个目录的别名
注意alias必须有 "/"  结束!
alias只能位于location块中


请求url是pythonav.cn/av/index.html时
web服务器会返回服务器上的/data/static/index.html

location ^~ /av {
    alias /data/static/;
}
复制代码
幻想毫无价值,计划渺如尘埃,目标不可能达到。这一切的一切毫无意义——除非我们付诸行动。
原文地址:https://www.cnblogs.com/TodayWind/p/13716720.html