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;
}