zoukankan      html  css  js  c++  java
  • Nginx 正则匹配

    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小写字母的任意一个
    
  • 相关阅读:
    android NDK开发及调用标准linux动态库.so文件
    android ndk增加对stl的支持
    Android中JNI的使用方法
    OCP-1Z0-052-V8.02-55题
    OCP-1Z0-053-V12.02-162题
    OCP-1Z0-052-V8.02-52题
    OCP-1Z0-052-V8.02-50题
    OCP-1Z0-052-V8.02-49题
    Android 中Java 和C/C++的相互调用方法
    用JNI调用C或C++动态联接库入门
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/10102633.html
Copyright © 2011-2022 走看看