精华内容
下载资源
问答
  • http跳转https server { listen 80; server_name 你的网页地址; rewrite ^(.*) https://你的网页地址$1 permanent; } 匹配路径https://你的网页地址/activity/14286.html 转发到路径https://你的网页地址/...

    http跳转https

     server {
            listen 80;
            server_name 你的网页地址;
            rewrite ^(.*) https://你的网页地址$1 permanent;
            }
    

    匹配路径https://你的网页地址/activity/14286.html   转发到路径https://你的网页地址/pages/activity/detail?id=14286 

    
     location ~* ^/(activity/)(.*)(\.html)$ {
                   rewrite ^/(activity/)(.*)(\.html)$ https://你的网页地址/pages/activity/detail?id=$2;
            }

    以上是参考例子 正则匹配规则请参考官方文档

    展开全文
  • Nginx 正则匹配

    2018-12-11 15:46:00
    Nginx 正则表达式之匹配操作符 过期缓存 针对浏览器 针对文件类型 针对文件夹 判断文件,文件夹 设置某些类型文件的浏览器缓存时间 匹配到所有uri 全局变量 常用正则 Nginx 正则表达式之匹配操作符 ~ 区分大小写...

    目录

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

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

    过期缓存

    expires      30d;

    表示过期时间30天

    针对浏览器

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

    禁止访问Chrome浏览器。
    422101-20181211141327811-1481371624.png

    针对文件类型

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

    针对文件夹

    location /test/ {
        return 403;
    }

    422101-20181211142201029-1651222202.png

    判断文件,文件夹

    -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小写字母的任意一个
    展开全文
  • Linux运维昱笔记(八):NGINX正则及location匹配 nginx正则及location匹配 nginx location 规则匹配 ^~ 标识符匹配后面跟一个字符串,匹配字符串后将停止对后续的正则表达式进行匹配。 如location ^~ /images/,...

    Nginx正则及location匹配,NginxRwrite规则

    nginx正则及location匹配

    • nginx location 规则匹配
    ^~	标识符匹配后面跟一个字符串,匹配字符串后将停止对后续的正则表达式进行匹配。
    如location ^~ /images/,在匹配了/images这个学符串后就停止对后续的正则匹配。
    =	精准匹配,如location = /,只会匹配url为/的请求。
    ~	区分大小写的匹配。
    ~*	不区分大小写的匹配。
    !~	对区分大小写的匹配取非。
    !~* 对不区分大小写的匹配取非。
    /	通用匹配,如果没有其它匹配,任何请求都会被匹配到。
    
    • 正则表达式
    *		重复前面的字符0次或多次
    ?		重复前面的字符0次或1次
    +		重复前面的字符1次成多次
    .		匹配除换行符以外的任意1个字符
    (a|b)	匹配a或b
    ^		以...开头
    $		以结尾
    {n}		重复前面的字符n次
    {n,}	重复前面的字符n次或更多次
    {n,m}	重复前面的字符n到m次
    *?		重复前面的字符0次或多次,但尽可能少重复
    +?		重复前面的字符1次或更多次,但尽可能少重复
    ??		重复前面的字符0次或1次,但尽可能少重复
    {n,m}?	重复前面的字符n到m次,但尽可能少重复
    {n,}?	重复前面的字符n次以上,但尽可能少重复
    
    • nginx location应用规则
    location [=|~|~*|^~|!~|!~*] /url/{...}
    

    默认值:no
    使用字段:server
    location参数根据URL的不同需求来进行配置,可以使用字符串与正则表达式匹配。
    例子

    location ~* .*\.jsp$ {			#不区分大小写匹配,以.jsp结尾的
    	proxy_pass http://tomcat_server;
    }
    
    • 匹配顺序优先级
      (location =) > (location 完整路径) > (location ^~ 路径) > (location ,* 正则顺序) > (location 部分起始路径) > (/)
    • 例子:
    location = / {
    #精准匹配 / ,主机名后面不能带任何字符串
    [configuration A]
    }
    
    location / {
    #因为所有的地址都以/开头,所以这条规则将匹配到所有请求
    #但是正则和最长字符串会优先匹配
    [configuration B]
    }
    
    location /documents/ {
    #匹配任何以/documents/开头的地址,匹配符合以后,还要继续往下搜索
    #只有后面的正则表达式没有匹配到时,这一条才会采用这一条
    [configuration C]
    }
    
    location ~ /documents/Abc {
    #匹配任何以/documents/开头的地址,匹配符合以后,还要继续往下搜索
    #只有后面的正则表达式没有匹配到时,这一条才会采用这一条
    [configuration CC]
    }
    
    location ^~ /images/ {
    #匹配任何以/images/开头的地址,匹配符合以后,停止继续往下搜索正则,采用这一条。
    [configuration D]
    }
    
    location ~* \.(gif|jpg|jpeg)$ {
    #匹配所有以gif,jpg或jpeg结尾的请求
    #然而,所有请求/images/下的图片会被config D处理,因为^~到达不了这一条正则
    [configuration E]
    }
    
    location /images/ {
    #字符匹配到/images/,会继续往下,会发现^~存在
    [configuration F]
    }
    
    location /images/abc/ {
    #最长字符匹配到/images/abc,继续往下,会发现^~存在
    #F与G的防止顺序是没有关系的
    [configuration G]
    }
    
    location ~ /images/abc {
    #只有去掉config D 才有效:先最长匹配config G 开头的地址,继续往下搜索,匹配到这一条正则才会采用
    [configuration H]
    }
    
    / ---->config A
    精确安全匹配,即使/index.html也匹配不了
    /downloads/download.html	---->config B
    匹配B以后,往下没有任何匹配,采用B
    /images/1.gif	---->configuration D
    匹配到B,往下匹配到D,停止往下
    /images/abc/def	---->config D
    最长匹配到G,往下匹配D,停止往下
    你可以看到任何以/images/开头的都会匹配到D并停止,FG写在这里是没有任何意义的,H是永远轮不到的,这里只是为了说明匹配顺序
    /documents/document.html	---->config C
    匹配到C,往下没有任何匹配,采用C
    /documents/document.html ---->config C
    匹配到C,往下没有任何匹配,采用C
    /documents/1.jpg ---->configuration E
    匹配到C,往下正则匹配到E
    /documents/Abc ---->config CC
    最长匹配到C,往下正则顺序匹配到CC,往下到E。
    

    Nginx Rewrite规则

    rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。rewrite只能放在server{},location{},if{}中,并且只能对域名后边的除去传递的参数外的字符串起作用。
    Nginx的Rewrite规则采用PCRE(Perl compatible Regular Expressions)prel兼容正则表达式的语法进行规则匹配,如果需要nginx的rewrite功能,在编译安装nginx之前,必须安装PCRE库。
    例如:http://www.csdn.net/a/we/index.php?id=1&u=admin只对URL中的/a/we/index.php等字符串起作用。

    小知识:URL是Uniform Resource Location的缩写,译为“统一资源定位符”。 例:http://www.csdn.net/a/we/index.html

    语法

    rewrite 正则表达式 更换目标 [标志位]
    rewrite和location功能有点像,都能实现跳转。主要区别在于rewrite是在同一域名内更改获取资源的路径,而location是对路径做控制访问或反向代理,可以使用proxy_pass到其他机器。很多情况下rewrite也会写到location里,他们的执行顺序是:
    1、执行server块的rewrite指令。
    2、执行location匹配。
    3、执行选定的location中的rewrite指令。
    注意:如果其中URL被重写,则重新循环执行1-3,直到找到真实存在的文件;循环超过10次,则返回500状态码Internal Server Error 错误。

    flag标志位

    • last:相当于Apache的 [L] 标记,表示完成rewrite。
    • break:本条规则匹配完成后,终止匹配,不再匹配后面的规则。
    • redirect:返回302临时重定向,浏览器地址栏会显示跳转后的URL地址。
    • permanent:返回301永久重定向,浏览器地址栏会显示跳转后的URL地址。
      说明
      last一般写在server和if中,而break一般使用在location中。
      last不终止重写后的URL匹配,即URL会再从server走一遍匹配流程,而break终止重写后的匹配。
      break和last都能组织继续执行后面的rewrite指令。
      last和break用来实现URL重写,浏览器地址栏URL地址不变。
      redirect和permanent用来实现URL跳转,浏览器地址会显示跳转后的URL地址。

    if指令和全局变量

    if判断指令
    语法为 if(condition){…},对给定的条件condition进行判断。如果为真,大括号内的rewrite指令将被执行,if条件(condition)可以使如下任何内容:
    当表达式只是一个变量时,如果其值为空或任何以0开头的字符串时都会当作条件为false(假)。
    直接比较变量和内容时,使用=或!=。
    -f和!-f 用来判断是否存在文件。
    -d和!-d 用来判断是否存在目录。
    -e和!-e 用来判断是否存在文件或目录。
    -x和!-x 用来判断文件是否可执行。
    例如:http://www.abc.com/msie /a/b/test.html

    if ($http_user_agent ~ MSIE) {
    rewrite ^(.*)$ /msie/$1 break;
    }	#如果UA包含“MSIE”,rewrite请求到/mise/目录下
    
    if ($request_method = POST) {
    return 405;
    }	#如果提交方法为POST,则返回状态405(Method not allowed),return不能返回301,302
    

    注意:因为返回301和302不能只返回状态码,还必须有重定向的URL,所以return指令无法返回301和302

    if ($slow) {
    limit_rate 10k;
    }	#限速,$slow可以通过set指令设置
    
    if (!-f $request_filename) {
    break;
    proxy_pass http://127.0.0.1;
    }	#如果请求的文件名不存在,则反向代理到localhost。这里的break也是停止rewrite检查。
    
    if ($args ~ post=140) {
    rewrite ^ http://example.com/ permanent;
    }	#如果querystring中包含“post=140”,永久重定向到example.com
    
    location ~* \.(gif|jpg|png|swf|flv)$ {
    	valid_referers none blocked www.xiangguo.com www.shaguo.com;
    	if ($invalid_referer) {
    		return 404;
    	}
    }		#防盗链
    

    防盗链,在nginx优化笔记里有详细讲解。

    Nginx变量

    下面是可以用作if判断的变量

    $args			记录请求行中的参数,同$query_string
    $content_length	记录请求头中的Conten-length字段。
    $args			记录请求行中的参数,同$query_string
    $content_type	记录请求头中的Content-Type字段。
    $document_root	记录当前请求在root指令中指定的值。
    $host			记录请求主机头字段,否则为服务器名称。
    $http_user_agent记录用于记录客户端浏览器的相关信息。
    $http_cookie	记录客户端cookie信息。
    $limit_rate		记录可以限制连接速录
    $request_method	记录客户端请求的动作,通常为GET或POST。
    $request_filename记录当前请求的文件路径,由root或alias指令与URL请求生成。
    $scheme			记录HTTP方法(如http,https)。
    $server_protocol记录请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
    $server_addr 	记录服务器地址,在完成一次系统调用后可以确定这个值。
    $server_name	记录服务器名称。
    $server_port 	记录请求到达服务器的端口号。
    $request_url	记录包含请求参数的原始URL,不包含主机名,如“/foo/bar.php?arg=baz”。
    $url			记录不带请求参数的当前URL,$url不包含主机名,如“/foo/bar.html”
    $document_url$url相同。
    $http_x_forwarded_for记录远程客户端的ip地址。
    $remote_addr	记录远程客户端的ip地址。
    $remote_port	记录远程客户端的端口。
    $remote_user 	记录远程客户端用户名称。
    $time_local		记录访问时间及时区。
    $request		记录请求的URL与HTTP协议。
    $status			记录请求的状态,例如成功时为200,页面找不到时为404。
    $body_byte_sent	记录发送给客户端的文件主体内容大小。
    $http_referer	记录是从哪个页面链接访问过来的。
    
    展开全文
  • Nginx正则表达式和动静分离 一.正则表达式 1.正则表达式的作用和类型 1)正则表达式作用 配置动静分离使用 识别用户输入访问nginx内容 2)正则表达式规则 2.正则表达式常见的符号 3.正则表达式特殊符号 4.配置...

    Nginx正则表达式和动静分离

    一.正则表达式
    1.正则表达式的作用和类型
    1)正则表达式作用
    配置动静分离使用
    识别用户输入访问nginx内容
    2)正则表达式规则
    在这里插入图片描述
    2.正则表达式常见的符号
    在这里插入图片描述
    3.正则表达式特殊符号
    在这里插入图片描述
    4.配置动静分离
    1)修改nginx主配置文件
    编写hosts文件01和02都要写
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在win10里面编写hosts文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    location ~.php$ { 识别用户输入是php结尾内容跳转到www.benet.com
    proxy_pass http://www.benet.com:80;
    }
    2)配置静态图片nginx处理
    在这里插入图片描述
    在这里插入图片描述
    3)重新启动服务
    在这里插入图片描述
    结束!
    感谢观看!拜拜ヾ(•ω•`)o😊😀😁

    展开全文
  • Nginx正则表达式、location匹配、Rewrite重写详解一、常用的Nginx正则表达式二、location匹配概述1、location大致可以分为三类2、location常用的匹配规则3、location 优先级4、location 示例说明5、实际网站使用中,...
  • 文章目录常用的Nginx 正则表达式locationlocation的分类location常用的匹配规则location优先级location示例说明:`location = / { }``location / { }``location /documents/ { }``location /docunents/abc { }``...
  • Nginx正则配置

    2019-11-12 16:48:31
    Nginx配置中Location的语法规则 location [ = | ~ | ~* | ^~ | !~ | !~* ] /uri/{ … } = 表示精确匹配 ~ 表示区分大小写正则匹配 ~* 表示不区分大小写正则匹配 ^~ 表示URI以某个常规字符串开头 !~ 表示区分大小写...
  • 文章目录常见的Nginx正则表达式locationrewriterewrite 示例 常见的Nginx正则表达式 ^ :匹配输入字符串的起始位置 $ :匹配输入字符串的结束位置 * :匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“o...
  • 常用的Nginx正则表达式 ^:匹配输入字符串的起始位置 $:匹配输入字符串的结束位置 *:匹配前面的字符零次或多次。如“ol*”能匹配“o”、“ol”、“oll” +:匹配前面的字符一次或多次。如“ol+”能匹配“ol”、“o...
  • nginx正则

    2012-12-12 11:30:22
    Nginx Location 语法,与简单配置 一、介绍Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器. 二、...
  • nginx正则笔记

    千次阅读 2014-11-29 23:54:36
    正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配,其中: * -f和!-f用来判断是否存在...
  • 搜集的资料有助于借鉴参考复习常用的nginx正则表达式(入门级)location用法location可以分为三类location 优先级rewrite跳转rewrite跳转示例总结 常用的nginx正则表达式(入门级) ^:匹配输入字符串的起始位置 $:...
  • nginx 正则2

    千次阅读 2018-06-13 00:34:59
    正则表达式匹配 :~ 为区分大小写匹配~* 为不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配文件及目录匹配,其中:-f和!-f用来判断是否存在文件-d和!-d用来判断是否存在目录-e和!-e用来判断...
  • nginx 正则表达式使用的是PCRE,PCRE库是一组函数,它们使用与Perl 5相同的语法和语义实现正则表达式模式匹配.PCRE具有自己的本机API,以及一组与POSIX正则表达式API对应的包装函数。PCRE库是免费的,即使是用于构建...
  • nginx正则表达式

    2015-01-06 08:04:00
    nginx的rewrite指令中可以通过设置该条rewrite的flag来对该规则进行说明。一般可以设置的flag有:last,break,redirect,permanent四种。 redirect说明,这条规则是一个临时的跳转,并且此时如果观察http请求的...
  • Nginx 正则匹配配置

    2016-09-19 23:39:29
    location表达式类型~ 表示执行一个正则匹配,区分大小写~* 表示执行一个正则匹配,不区分大小写^~ 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他location。= 进行普通字符精确匹配。也就是完全匹配...
  • nginx正则详细写法。

    千次阅读 2019-03-08 09:59:54
    location正则写法 首先来看一个示例: location = / { 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 但是正则和最长...
  • (location =) &...rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。 如果相对域名或参数字符串起作用,可以使用全局变量匹配,也...
  • 这篇文章主要介绍了使用Nginx实现301跳转至... 基于 SEO 和安全性的考量,需要进行 301 跳转,以下使用 Nginx 作通用处理 实现结果 需要将以下地址都统一跳转到 https 的根域名 https://chanvinxiao.com •http...
  • 1:Nginx location 规则匹配 ^~ 标识符匹配后面跟一个字符串。匹配字符串后将停止对后续的正则表达式进行匹配。 如:location ^~ /images/, 在匹配了/images、这个字符串后就停止对后续的匹配 = 精准匹配,如:...
  • rewrite功能详解➤一、常见的Nginx正则表达式➤二、location➤1、location大致可以分为三类➤2、location常用的匹配规则:➤3、location 优先级:➤4、location 示例说明:➤5、三条匹配规则定义➤三、rewrite➤1、...
  • 基于 SEO 和安全性的考量,需要进行 301 跳转,以下使用 Nginx 作通用处理
  • nginx反向代理和rewrite进行解决跨域问题 去掉url中的一部分字符串,通过nginx正则生成新的url

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,980
精华内容 3,592
关键字:

nginx正则301跳转