1:Nginx location 规则匹配
^~ 标识符匹配后面跟一个字符串。匹配字符串后将停止对后续的正则表达式进行匹配。
如:location ^~ /images/, 在匹配了/images、这个字符串后就停止对后续的匹配
= 精准匹配,如:location=/,只会匹配urrl为/的请求
~ 区分大小写的匹配
~* 不区分大小写的匹配
!~ 对区分大小写的匹配取非
!~* 对区分大小写的匹配取非
/ 通用匹配,如果没有其他匹配,任何匹配请求都会被匹配到
2:正则表达式
* 重复前面的字符0次或多次
? 重复前面的字符0次或1次
+ 重复前面的字符1次或多次
. 匹配除换行符以外的任意一个字符
(a | b) 匹配a或b
^ 以.....开头
$ 以.....结尾
{n} 重复前面的字符n次
{n,} 重复前面的字符n次或更多次
{n,m} 重复前面的字符n次到m次
*? 重复前面的字符0次或多次 ,但尽可能的少重复
+? 重复前面的字符1次或更多次 ,但尽可能的少重复
?? 重复前面的字符0次或1次 ,但尽可能的少重复
{n,m} ? 重复前面的字符n次或m次 ,但尽可能的少重复
{n,} ? 重复前面的字符n次以上 ,但尽可能的少重复
3:正则补充
\w 匹配任意不是字母,数字,下划线,汉子的字符
\s 匹配任意不是空白字符串的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[a] 匹配a-z小写字母的任意一个
[^a] 匹配除a以外的任意字符
4:过期缓存
expires 30d;
5:设置某些类型文件的浏览器缓存时间
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)$
{
expires 1h;
}
6:针对浏览器
location / {
if ($http_user_agent ~* chrome) {
return 503;
}
}
7:判断文件,文件夹
-f和!-f用来判断是否存在文件
-d和!-d用来判断是否存在目录
-e和!-e用来判断是否存在文件或目录
-x和!-x用来判断文件是否可执行
8:全局变量
$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
9:案例
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: