Nginx 正则匹配以及变量

参考文章:
Nginx正则匹配
Nginx 查看 $1,$2,$3

Nginx 正则表达式匹配操作符

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

判断文件,文件夹

-f和!-f用来判断是否存在文件

-d和!-d用来判断是否存在目录

-e和!-e用来判断是否存在文件或目录

-x和!-x用来判断文件是否可执行
全局变量
$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,通俗讲就是该请求是通过哪个链接跳过来的

示例:

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小写字母的任意一个

自定义路径变量 $1,$2,$3

匹配正则表达式时,匹配到的值通过$1、$2、$3、…、$9使用。

	location ~* /out/(.*) {
		default_type text/html ;
		return 200 "hello, $1";
	}
	location ~* /out2/(.*)/(.*) {
		default_type text/html ;
		return 200 "var1 = $1, var2 = $2";
	}

在这里插入图片描述

使用示例:

location ~* /iserver/services/(.*)/rest/maps/(.*)/queryResults(.*) {
   default_type text/html ;
   set $arg1 $1;
   set $arg2 $2;
   set $arg3 $3;
   if ($arg1 = "map-cypt") { 
       proxy_pass "http://127.0.0.1:81/test/out/$arg1"; 
       break; 
  } 
   return 200 "var1 = $arg1, var2 = $arg2, var3 = $arg3, args = $args";
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值