nginx location配置详细解释

【原文链接】:https://blog.tecchen.xyz ,博文同步发布到博客园。
由于精力有限,对文章的更新可能不能及时同步,请点击上面的原文链接访问最新内容。
欢迎访问我的个人网站:https://www.tecchen.xyz

语法规则

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;
}
posted @ 2019-04-01 11:32 Candyメ奶糖 阅读(...) 评论(...) 编辑 收藏