nginx location配置详细解释

语法规则

location [=|~|~*|^~] /uri/ { … }

  • = 开头表示精确匹配
  • ^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。以xx开头
  • ~ 开头表示区分大小写的正则匹配 以xx结尾
  • ~* 开头表示不区分大小写的正则匹配 以xx结尾
  • !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
  • / 通用匹配,任何请求都会匹配到。

匹配顺序

首先精确匹配 = -> 其次以xx开头匹配^~ -> 然后是按文件中顺序的正则匹配 -> 最后是交给 / 通用匹配。
当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

常用的location匹配规则

  • 配置指定文件名
# icon
location = /favicon.ico {
   root images; # 文件在images目录中
   expires 7d;  # 缓存7天
}
  • 根据文件名模糊匹配
# 百度统一验证
location ~* ^/baidu_verify_[\w]+.html$ {
   root  html;
}
  • 路径部分匹配
# 静态图片
location ^~ /cdn-images/ {
   alias images/;  # 注意使用的alias及后面的/
   expires 7d;
}
  • 动静分离
# 静态文件
location ~* \.(html|jpg|png)$ {
    root   cloud-web;
    index  index.html index.htm;
}  
# 动态请求
location ~* /hbm/  {
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass   http://10.0.1.210:8769;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章