标签归档 nginx配置

通过seo圣人

nginx跳转规则基础知识详解

做运维的都知道,nginx是一款非常轻巧而又强大的web服务端软件,性能非常突出,软件本身体积也很小,较apache相比,nginx有着许多无可替代的优势,那么我们今天就详细的讲解下nginx跳转规则的基础知识。

下面的句子是一段简单的nginx语法规则:

location [=|~|~*|^~] /uri/ { … }

针对上面的例子,我来对这段nginx规则里面的每一个符号做一个详细的解释:
= 开头表示精确匹配;
^~ 开头表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格);
~ 开头表示区分大小写的正则匹配;
~*  开头表示不区分大小写的正则匹配;
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则;
/ 通用匹配,任何请求都会匹配到;
多个location配置的情况下匹配顺序为(参考资料而来,还未实际验证,试试就知道了,不必拘泥,仅供参考);
首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

下面是一段nginx匹配规则以及详细的解释,具体的规则省略:

location = / {
	#规则A
	#访问根目录/, 比如https://www.dobunkan.com/ 将匹配规则A
}

location = /login {
	#规则B
	#访问 https://www.dobunkan.com/login 将匹配规则B,https://www.dobunkan.com/register 则匹配规则H
}

location ^~ /static/ {
	#规则C
	#访问 https://www.dobunkan.com/static/a.html 将匹配规则C
}

location ~ \.(gif|jpg|png|js|css)$ {
	#规则D
	#访问 https://www.dobunkan.com/a.gif, https://www.dobunkan.com/b.jpg 将匹配规则D和规则E,但是规则D顺序优先,规则E不起作用,而 https://www.dobunkan.com/static/c.png 则优先匹配到 规则C
}

location ~* \.png$ {
	#规则E
	#访问 https://www.dobunkan.com/a.PNG 则匹配规则E, 而不会匹配规则D,因为规则E不区分大小写。
}

location !~ \.xhtml$ {
	#规则F
	#访问 https://www.dobunkan.com/a.xhtml 不会匹配规则F和规则G,https://www.dobunkan.com/a.XHTML不会匹配规则G,因为不区分大小写。规则F,规则G属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。
}

location !~* \.xhtml$ {
	#规则G
	#访问 https://www.dobunkan.com/a.xhtml 不会匹配规则F和规则G,https://www.dobunkan.com/a.XHTML不会匹配规则G,因为不区分大小写。规则F,规则G属于排除法,符合匹配规则但是不会匹配到,所以想想看实际应用中哪里会用到。
}

location / {
	#规则H
	#访问 https://www.dobunkan.com/category/id/1111 则最终匹配到规则H,因为以上规则都不匹配,这个时候应该是nginx转发请求给后端应用服务器,比如FastCGI(php),tomcat(jsp),nginx作为方向代理服务器存在。
}

对于nginx规则,目前中文教程并不多,英语底子不好的很难看的明白,你可以对照上面的讲解逐条尝试,一定会有收获的,当然了,你还需要对你的尝试结果做做总结,这样你才会有进步,在日后的应用中才会得心应手!