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:Nginx location应用规则
location [=|~|~*|^~|!~|!~*] /url/{...}
默认值:no
使用字段:server
location参数根据URL的不同需求来进行位置配置。可以使用字符串与正则表达式匹配
location ~*.*.jsp$ {
proxy_pass http://tomcat_server;
}
http://www.a.com/
5:匹配顺序优先级
6:实际使用建议
实例:
要求输入www.a.com/a.html 跳转到www.a.com/file/a.html
[root@localhost ~]# vim /etc/init.d/nginx
location /a.html {
rewrite (.*) http://www.a.com/file/a.html break;
}
测试:
实例:
要求输入www.a.com跳转到 www.b.com
server {
listen 80;
server_name www.a.com;
charset uft-8;
access_log logs/a.com.access.log main;
location / {
root html;
index index.html index.htm;
}
if ($host = 'www.a.com') {
rewrite ^(.*)$ http://www.b.com;
}
}
server {
listen 80;
server_name www.b.com;
charset uft-8;
access_log logs/b.com.access.log main;
location / {
root html;
index index.html index.htm;
}
测试: