nginx-location正则表达式匹配规则及动静分离

nginx-location正则表达式匹配规则及动静分离

nginx,location常用正则表达式,及nginx动静分离

nginx匹配规则

1
2
3
4
5
6
~      波浪线表示执行一个正则匹配,区分大小写
~* 表示执行一个正则匹配,不区分大小写
^~ ^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录
= 进行普通字符精确匹配
@ "@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files
!~(!~*) 表示区分大小写不正则匹配和不区分大小写不正则匹配

nginx正则表达式

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

注意 当正则表达式中含有 {} 是,必须将 正则表达式用 “” 引起来否则会报错
nginx: [emerg] pcre_compile() failed: missing ) in “/one/(\d” in /usr/local/nginx/conf/nginx.conf:56

例如:

1
2
3
4
5
6
#rewrite ^/test/([\d]{3})/$ /index.php?id=$1 break;  #报错
#修改为
rewrite "^/test/([\d]{3})/$" /index.php?id=$1 break;

#本条可以不用引号
rewrite ^/(\d+)/$ /index.php?id=$1 break;

 

动静分离清单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 第一个必选规则
location = / {
proxy_pass http://127.0.0.1:9000/index
}
# 第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项
# 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
location ^~ /static/ {
root /web/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
root /web/res/;
}
#第三个规则就是通用规则,用来转发动态请求到后端应用服务器
#非静态文件请求就默认是动态请求,自己根据实际把握
#毕竟目前的一些框架的流行,带.php,.jsp后缀的情况很少了
location / {
proxy_pass http://127.0.0.1:9000/
}
 
posted @ 2019-10-08 12:46  什么都不会的小郭  阅读(1942)  评论(0编辑  收藏  举报