Nginx 正则表达式之匹配操作符

~     区分大小写(大小写敏感)匹配成功
~* 不区分大小写匹配成功
!~ 区分大小写匹配失败
!~* 不区分大小写匹配失败
^ 以什么开头的匹配
$ 以什么结尾的匹配
* 代表任意字符

过期缓存

expires      30d;

表示过期时间30天

针对浏览器

location / {
if ($http_user_agent ~* chrome) {
return 503;
}
}

禁止访问Chrome浏览器。

针对文件类型

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}

针对文件夹

location /test/ {
return 403;
}

判断文件,文件夹

-f和!-f用来判断是否存在文件
-d和!-d用来判断是否存在目录
-e和!-e用来判断是否存在文件或目录
-x和!-x用来判断文件是否可执行

设置某些类型文件的浏览器缓存时间

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)$
{
expires 1h;
}

匹配到所有uri

location / {

}

last一般写在server和if中,而break一般使用在location中。

redirect : 返回302临时重定向,地址栏会显示跳转后的地址。

全局变量

$args                                         请求中的参数,如www.abc.com/test/hello?a=1&b=2的$args就是a=1&b=2
$document_root Nginx虚拟主机配置文件中的root参数对应的值
$document_uri 当前请求中不包含指令的URI,如www.abc.com/test/hello?a=1&b=2的document_uri就是/test/hello,不包含后面的参数
$host 主机头,也就是域名
$http_user_agent 客户端的详细信息,也就是浏览器的标识,用curl -A可以指定
$http_cookie 客户端的cookie信息
$limit_rate 如果Nginx服务器使用limit_rate配置了显示网络速率,则会显示,如果没有设置,则显示0
$remote_addr 客户端的公网IP
$remote_port 客户端的端口
$request_method 请求资源的方式,GET/PUT/DELETE等
$request_filename 当前请求的资源文件的路径名称,相当于是$document_root/$document_uri的组合
$request_uri 请求的链接,包括$document_uri和$args
$scheme 请求的协议,如ftp、http、https
$server_protocol 客户端请求资源使用的协议的版本,如HTTP/1.0,HTTP/1.1,HTTP/2.0等
$server_addr 服务器IP地址
$server_name 服务器的主机名
$server_port 服务器的端口号
$uri 和$document_uri相同
$http_referer 客户端请求时的referer,通俗讲就是该请求是通过哪个链接跳过来的 常用:$http_referer
$request_uri
$http_user_agent

案例

args:name=zhangsan&age=15
document_root:/home/wwwroot/default/wounion/dragonfly/public
document_uri:/test/hello
host:jiqing.wounion.com
http_user_agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36
http_cookie:PHPSESSID=3ire1fr9bl3qdpd787pv0qb7a5
limit_rate:0
remote_addr:127.0.0.1
remote_port:43180
request_method:GET
request_filename:/home/wwwroot/default/wounion/dragonfly/public/test/hello
request_uri:/test/hello?name=zhangsan&age=15
scheme:http
server_protocol:HTTP/1.1
server_addr:127.0.0.1
server_name:jiqing.wounion.com
server_port:80
uri:/test/hello
http_referer:

常用正则

. : 匹配除换行符以外的任意字符
? : 重复0次或1次
+ : 重复1次或更多次
* : 重复0次或更多次
\d :匹配数字
^ : 匹配字符串的开始
$ : 匹配字符串的介绍
{n} : 重复n次
{n,} : 重复n次或更多次
[c] : 匹配单个字符c
[a-z] : 匹配a-z小写字母的任意一个

Nginx 正则匹配的更多相关文章

  1. nginx正则匹配

    1.通用匹配规则 .     匹配除换行符以外的任意字符 \w  匹配字母.数字.下划线.汉字 \s   匹配任意的空白符 \d   匹配数字 ^    匹配字符串的开始 $    匹配字符串的结束 ...

  2. Nginx 笔记与总结(7)Location:正则匹配

    在 /usr/local/nginx/conf/nginx.conf 的默认 server 段中,保留默认的 location 信息(之前测试的 location 配置删除): location / ...

  3. nginx location 正则匹配

    nginx 统计语句1.根据访问IP统计UV awk '{print $1}' access.log|sort | uniq -c |wc -l2.统计访问URL统计PV awk '{print $7 ...

  4. 07 nginx Location之正则匹配

    一:Location之正则匹配 再来看,正则也来参与. location / { root   /usr/local/nginx/html; index  index.html index.htm; ...

  5. nginx获取经过层层代理后的客户端真实IP(使用正则匹配)

    今天帮兄弟项目搞了一个获取客户端真实IP的问题,网上这种问题很多,但是对于我们的场景都不太合用,现把我的解决方案share给大家,如有问题,请及时指出. 场景: 在请求到达后端服务之前,会经过层层代理 ...

  6. Nginx location 匹配顺序整理

    Nginx location模块整理 具体的Nginx安装就不在这里描述了,这里只是为了对location的描述 Nginx环境 a. 查看当前系统cat /etc/redhat-release [r ...

  7. Nginx localtion匹配规则

    mark:2016年05月25日13:20:54 (存手打,拒绝转载) 一.location分为 普通location 和 正则location 只有带有 "~" 或者" ...

  8. nginx location匹配规则

    谢谢作者的分享精神,原文地址:http://www.nginx.cn/115.html location匹配命令 ~      #波浪线表示执行一个正则匹配,区分大小写~*    #表示执行一个正则匹 ...

  9. 转:nginx location匹配规则

    location匹配命令 ~      #波浪线表示执行一个正则匹配,区分大小写~*    #表示执行一个正则匹配,不区分大小写^~    #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配 ...

随机推荐

  1. Android Thread Handler UIHandler demos

    extends:http://blog.csdn.net/superjunjin/article/details/7540064 序效果:为了显示如何用message传值的简单例子 例1,点击按钮,持 ...

  2. PHP概率算法---砸金蛋示例

    这是一个很经典的概率算法: function get_rand($proArr) { $result = ''; //概率数组的总概率精度 $proSum = array_sum($proArr); ...

  3. rk3188 双屏异显分析

      首先是android层: PhoneWindow.java 中加入了GestureDetector成员, 来实现全局滑屏手势监听 onFling方法中,调用了mDecor.getRootWindo ...

  4. talib 中文文档(十):Price Transform Functions 价格指标

    Price Transform Functions AVGPRICE - Average Price 函数名:AVGPRICE 名称:平均价格函数 real = AVGPRICE(open, high ...

  5. python练习汇总

    1.99乘法表 """ 题目:输出 9*9 乘法口诀表. """ for i in range(1, 10): print () for j ...

  6. python提取相对路径

    原理: 用绝对路径,截断根目录的路径,就得到了相对路径. 代码 方法1:字符串替换(用字符串函数)推荐 import os print('==========1===========') abspat ...

  7. X-NUCA联赛WEB赛前指导write-up

    第一关 审查代码发现有隐藏的连接,访问,flag一闪而过.打开burpsuite,设置好代理,然后重新访问,在历史里找相应的回复包,得到flag. 第二关 审查元素 修改按钮为可用 抓获一个POST包 ...

  8. python3 os.walk()使用

    os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下. 在Unix,Windows中有效. os.walk(top[, topdown=True[, onerror=Non ...

  9. EWD简介

    Edsger Wybe Dijkstra was a principal contributor in the late 1950's to the development of the ALGOL, ...

  10. WCF For Silverlight跨域策略

    在WCF的根目录下添加跨域文件 <?xml version="1.0" encoding="utf-8" ?> <access-policy& ...