郑州做网站公司msgg,手机怎么做图纸设计,高端网站建设服务,抖音推广seo1、nginx常用的正则表达式
^ #xff1a;匹配输入字符串的起始位置$ #xff1a;匹配输入字符串的结束位置 *#xff1a;匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” #xff1a;匹配前面的字符一次或多次。如“ol”能匹配“ol”及“oll”、“olll”…1、nginx常用的正则表达式
^ 匹配输入字符串的起始位置$ 匹配输入字符串的结束位置 *匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll” 匹配前面的字符一次或多次。如“ol”能匹配“ol”及“oll”、“olll”但不能匹配“o”? 匹配前面的字符零次或一次例如“do(es)?”能匹配“do”或者“does””?”等效于”{0,1}” . 匹配除“\n”之外的任何单个字符若要匹配包括“\n”在内的任意字符请使用诸如“[.\n]”之类的模式\ 将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用。如“\n”匹配一个换行符而“$”则匹配“$”\d 匹配纯数字[0-9] \s 空白符 \w 任意单词字符包括下划线[A-Za-z0-9_]{n} 重复 n 次{n,} 重复 n 次或更多次{n,m} 重复 n 到 m 次[] 定义匹配的字符范围[c] 匹配单个字符 c[a-z] 匹配 a-z 小写字母的任意一个[a-zA-Z0-9] 匹配所有大小写字母或数字() 表达式的开始和结束位置| 或运算符
2、location
1、location匹配的分类
1)、精准匹配location /test {…} *完整的路径(必须有test )一个字都不能少也不能错 2)、一般匹配location / {…} *location / {…}–所有 *location /test {…}–包含test 3)、正则匹配location ~ / {…} *location ^~前缀匹配以什么为开头 *location ~区分大小写进行匹配 *location ~不区分大小写 *location !~区分大小写取反匹配 *location !~不区分大小写取反匹配
location 常用的匹配规则 进行普通字符精确匹配也就是完全匹配。^~ 表示普通字符匹配。使用前缀匹配。如果匹配成功则不再匹配其它 正则匹配location。~ 区分大小写的匹配。~* 不区分大小写的匹配。!~ 区分大小写的匹配取非。!~* 不区分大小写的匹配取非。
location匹配一旦匹配成功不再向下继续匹配
优先级 首先精确匹配 其次前缀匹配 ^~ 其次是按文件中顺序的正则匹配 或* 然后匹配不带任何修饰符的一般前缀匹配 最后是交给 / 通用匹配 精确匹配——正则匹配——一般匹配 完整的优先级面试题 (location 完整路径) (location ^~ 路径) (location ~,~* 正则顺序) (location /部分前缀路径) (location /) 首先看 优先级精确 前缀^~ 正则,* 一般 通用/ 在没有精确匹配的时候先看所有前缀的长度取最长匹配的location 如果最长的前缀匹配是带有~~的则匹配直接使用^~的location匹配用户的访问路径并跳转页面如果最长的前缀匹配是不带^~的则会继续看其它的正则匹配 前缀匹配看长度最长的优先匹配正则匹配看上下顺序根据配置文件的配置由上往下依次匹配匹配到即停止 2、案例
案例1 1location / {}
为精确匹配 / 主机名后面不能带任何字符串比如访问 / 和 /data则 / 匹配/data 不匹配 再比如 location /abc则只匹配/abc /abc/或 /abcd不匹配。若 location /abc则即匹配/abc 、/abcd/ 同时也匹配 /abc/。
2location / {}
因为所有的地址都以 / 开头所以这条规则将匹配到所有请求 比如访问 / 和 /data, 则 / 匹配 /data 也匹配 但后面前缀路径会和最长字符串优先匹配最长匹配
3location /documents/ {}
匹配任何以 /documents/ 开头的地址匹配符合以后还要继续往下搜索其它 location 只有其它 location后面的前缀路径没有匹配到时才会采用这一条
4location /documents/abc {}
匹配任何以 /documents/abc 开头的地址匹配符合以后还要继续往下搜索其它 location 只有其它 location后面的前缀路径没有匹配到时才会采用这一条
5location ^~ /images/ {}
匹配任何以 /images/ 开头的地址匹配符合以后停止往下搜索正则采用这一条
6location ~* .(gif|jpg|jpeg)$ {} **重要**
匹配所有以 gif、jpg或jpeg 结尾的请求 然而所有请求 /images/ (资源文件路径项目打包后index.html文件内查看 关联路径可修改React:修改package.json 文件内的homepage:可更改路径)下的图片会被 location ^~ /images/ 处理因为 ^~ 的优先级更高所以到达不了这一条正则
7location /images/abc {}
最长字符匹配到 /images/abc优先级最低继续往下搜索其它 location会发现 ^~ 和 ~ 存在
8location ~ /images/abc {}
匹配以/images/abc 开头的优先级次之只有去掉 location ^~ /images/ 才会采用这一条
9location /images/abc/1.html {}
匹配/images/abc/1.html 文件如果和正则location ~ /images/abc/1.html 相比正则优先级更高
案例2有如下匹配规则
location / { #规则A 访问网站根目录才会走这比如http://localhost/ 开头表示精确匹配
}
location /login { #规则Bhttp://localhost/login
}
location ^~ /static/ { #规则C http://localhost/static/a.html ^~开头表示以常规字符串开头的url路径
}
location ~ \.(gif|jpg|png|js|css)$ { #规则D 访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D和规则E但是规则D顺序优先规则E不起作用而 http://localhost/static/c.png 则优先匹配到 规则C ~开头表示区分大小写的匹配
}
location ~* \.png$ { #规则E 访问 http://localhost/a.PNG 则匹配规则E 而不会匹配规则D因为规则E不区分大小写 ~*开头表示不区分大小写的正则匹配
}
location !~ \.xhtml$ { #规则F !~开头表示区分大小写的不匹配
}
location !~* \.xhtml$ { #规则G !~*开头表示不区分大小写的不匹配
}
location / { #规则H http://localhost/register
} 访问 http://localhost/a.xhtml 不会匹配规则F和规则Ghttp://localhost/a.XHTML不会匹配规则G因为不区分大小写。规则F规则G属于排除法符合匹配规则但是不会匹配到所以想想看实际应用中哪里会用到。
访问 http://localhost/category/id/1111 则最终匹配到规则H因为以上规则都不匹配这个时候应该是nginx转发请求给后端应用服务器比如FastCGIphptomcatjspnginx作为方向代理服务器存在。
那么产生的效果如下
访问根目录/ 比如http://localhost/ 将匹配规则A
访问 http://localhost/login 将匹配规则Bhttp://localhost/register 则匹配规则H
访问 http://localhost/static/a.html 将匹配规则C
访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则D和规则E但是规则D顺序优先规则E不起作用而 http://localhost/static/c.png 则优先匹配到 规则C
访问http://localhost/a.PNG 则匹配规则E 而不会匹配规则D因为规则E不区分大小写。
访问 http://localhost/a.xhtml 不会匹配规则F和规则Ghttp://localhost/a.XHTML不会匹配规则G因为不区分大小写。规则F规则G属于排除法符合匹配规则但是不会匹配到所以想想看实际应用中哪里会用到。
访问http://localhost/category/id/1111则最终匹配到规则H因为以上规则都不匹配这个时候应该是nginx转发请求给后端应用服务器比如FastCGIphptomcatjspnginx作为方向代理服务器存在。
所以实际使用中通常至少有三个匹配规则定义如下 #直接匹配网站根通过域名访问网站首页比较频繁使用这个会加速处理官网如是说。
#这里是直接转发给后端应用服务器了也可以是一个静态首页
# 第一个必选规则
location / { proxy_pass http://tomcat:8080/index
} # 第二个必选规则是处理静态文件请求这是nginx作为http服务器的强项
# 有两种配置模式目录匹配或后缀匹配,任选其一或搭配使用
location ^~ /static/ { root /webroot/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ { root /webroot/res/;
} #第三个规则就是通用规则用来转发动态请求到后端应用服务器
#非静态文件请求就默认是动态请求自己根据实际把握
#毕竟目前的一些框架的流行带.php,.jsp后缀的情况很少了
location / { proxy_pass http://tomcat:8080/
3、(nginx的重定向) ReWrite语法
案例文件的最下面
案例1 案例2 案例3
重要
1、项目地址匹配了资源文件需要查看能否匹配 方法 对应不同的应用–nginx:一个端口对应不同应用判断 location ^~ /images/ {} location ~* .(gif|jpg|jpeg)$ {}
匹配所有以 gif、jpg或jpeg 结尾的请求 然而所有请求 /images/ (资源文件路径项目打包后index.html文件内查看 关联路径可修改React:修改package.json 文件内的homepage:可更改路径)下的图片会被 location ^~ /images/ 处理因为 ^~ 的优先级更高所以到达不了这一条正则