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/ }
|