Fork me on Gitee

nginx location配置详细解释

语法规则

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

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

匹配顺序

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

常用的location匹配规则

  • 配置指定文件名

    1
    2
    3
    4
    5
    # icon
    location = /favicon.ico {
    root images; # 文件在images目录中
    expires 7d; # 缓存7天
    }
  • 根据文件名模糊匹配

    1
    2
    3
    4
    # 百度统一验证
    location ~* ^/baidu_verify_[\w]+.html$ {
    root html;
    }
  • 路径部分匹配

    1
    2
    3
    4
    5
    # 静态图片
    location ^~ /cdn-images/ {
    alias images/; # 注意使用的alias及后面的/
    expires 7d;
    }
  • 动静分离

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 静态文件
    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;
    }
感谢您发财的小手,我们一起进步
TEC-CHEN 微信支付

微信支付

TEC-CHEN 支付宝

支付宝

TEC-CHEN 微信-赞赏码

微信-赞赏码


-------------本文结束感谢您的阅读-------------
0%