Nginx-location路由规则配置详解
发布时间:2025-05-21 23:25:08 发布人:远客网络
一、Nginx-location路由规则配置详解
1、nginx中的location对URL进行匹配;
2、语法:location [=|~|~*|^~]/uri/{…}
3、当找到符合条件的location时,将执行内部的指令;如果使用正则表达式,必须使用~*来表示不区分大小写或者~来表示区分大小写匹配;例如:location~*.(gif|jpg|jpeg)$;当匹配成功后,将停止继续匹配;如果没有找到,则使用常规字符串处理结果;
4、如果不是使用正则表达式,可以使用=进行严格匹配;
5、如果使用^~前缀用于一个常规字符串,表示如果路径匹配,则不测试正则表达式;
6、1:=前缀的指令严格匹配这个查询;如果找到则停止继续匹配
7、2:接下来的常规字符串,长的在前,如果这个匹配使用^~前缀,匹配停止;
8、3:正则表达式,按配置文件的顺序;
9、4:如果第三步产生匹配,则使用这个结果;停止匹配;否则使用第二部的匹配结果;
10、当匹配成功后,location中可以使用rewrite进行路由重写;
11、首先需要了解nginx rewrite中可以使用到的全局变量;
12、$uri与$document_uri相同:不包含指令的uri地址
13、如aaa.com/index.php?...中的index.php
14、防盗链:注意location生效规则,否则防盗链不起作用。
15、'Referer':来源头部为空的情况
16、'Referer':来源头部不为空,但里面的值被代理或者防火墙删除,这些值都不以http://或者https://开头
17、'Referer':来源头部包含当前的server_name,就是域名
18、arbitary string:任意字符串,定义服务器名或者可选的url前缀,主机名可以使用*开头或者结尾,在检测来源头部这个过程中,来源域名中的主机端口将会被忽略;
19、regular expression:正则表达式,表示排除https://或者http://开头的字符串
二、Nginx Location匹配规则
Location规则主要分为两类:正则location和普通location,其中~和~*用于条件判断,而=和^~则是定位机制。~和~*用于正则匹配,^~表示在找到普通location后立即停止正则匹配,遵循最大前缀匹配;=则为精确匹配,一旦找到就停止搜索。
匹配顺序遵循特定规则:首先尝试普通location,若无匹配则继续查找正则location。普通location的匹配遵循最大前缀原则,而正则location按配置文件中物理顺序匹配,一旦找到即停止后续搜索。
测试实例:配置中,链接192.168.88.38/a/b,按照最大前缀匹配,首先匹配到location/a/b,返回777;链接192.168.88.38/a,先匹配到普通location,然后遇到正则location~*/a,返回888。当正则location改为location ^~/a/b时,即使后续有符合的正则,也会因为^~的阻断而返回777。
^~和=符号在普通location中,能够阻止后续的正则匹配,前者表示非精确匹配,后者则是精确匹配,确保了规则的执行效率。
对于正则表达式的使用,Nginx提供了多种匹配方式,适用于不同的业务场景。掌握这些规则对于提高服务器配置和性能至关重要。
三、学习linux有什么用
1、学习Linux当然有用了,学习linux后,如果还想学编程语言的话,有如下选择:可以学C,因为Linux内核就是C编出来的,学好了C能更好的理解Linux;或者python,一种很强大的面向对象编程语言,学好了,进行Linux服务器管理相当的方便;还有就是php,现在很多公司招Linux方向的人员时,都会问你会不会php编程,如果你精通linux,还有php编程,那就很厉害了,至少找工作绝对没问题。编程语言都是相同的,VB是一种很好的编程语言,同时它也给微软造成了很大的安全隐患,但是这几年好像用的少了,java虽然好学,但是人才太多了,顶尖的不多。C++挺不好学的,但是它的用途很广,搞图形开发常用它。至于重新学习,完全不用,如果你VB非常熟练,再学其他的编程语言,会很轻松,刚开始可能有点费劲,一旦你深入进去了,就什么都不怕了。
2、“学了这个能做哪方面的工作”你指哪一方面,Linux还是编程?记着,它们是不同的行业。Linux的话,一般是服务器运行维护人员,或者做系统管理员。如果你能够在Linux下编程的话,而且编的不错,可以搞Linux的开发;至于编程方面,做网站开发,程序开发。
3、要去什么样的公司,看你的兴趣爱好。现在的IT公司很多很多,无论是大的,还是小的。只要你有能力,你有实力,什么公司都可以去。要说具体去什么样的公司,在咱们身边的就有很多,如百度、新浪、搜狐等。建议你去智联招聘或者51job看一下,那上面的公司很多的,你会发现每天都有需求。