location语法详解
location语法详解
注意:以下所有命令在centos7.6环境下测试,其他linux环境请自行测试
注意:在linux中,不是管理员登录,最好在指令前加上sudo提权,避免权限不够执行失败带来的麻烦,以下命令请都加上sudo,这是一个好习惯。
nginx下载安装配置
nginx常用命令
location是Nginx中用于URL匹配和请求分发的核心指令之一,其强大的路径匹配能力使得Nginx在Web服务器和反向代理场景中表现出色。
基本语法
location [=|~|~*|^~] /uri/ {
...
}
[=|~|~*|^~|@]:修饰符,用于定义URI的匹配方式,也可以不使用修饰符即为普通匹配。/uri/:要匹配的URI。
修饰符含义
=:精确匹配。~:区分大小写匹配的正则匹配。!~:区分大小写不匹配的正则匹配。~*:不区分大小写匹配的正则匹配。!~*:不区分大小写不匹配的正则匹配。^~:前缀匹配。如果匹配上不再检查正则表达式匹配和普通匹配。无修饰符:普通匹配,记录匹配上的普通匹配,只保留最长的匹配,若存在前缀匹配或正则匹配,匹配到直接返回,匹配不到才返回最长的普通匹配。/:通用匹配,匹配任何请求。如果其他匹配都未匹配上,则采用此配置块。
匹配顺序和优先级
当Nginx收到一个HTTP请求时,它会按照以下顺序进行location的匹配:
- 先判断精准匹配
=,如果命中,立即返回结果并结束解析过程。 - 如果没有精确匹配命中,则检查是否有前缀匹配
^~命中。如果有,且找到命中的最长的前缀匹配,立即返回结果并结束解析过程。 - 如果没有前缀匹配命中,则检查是否有不带修饰符的普通匹配命中。如果有,记录匹配信息,找到命中的最长的普通匹配并继续正则匹配。
- 如果没有前缀匹配命中,无论有没有普通匹配命中,接着按照配置文件中的顺序从上到下依次进行正则匹配(
~或~*或!~或!~*)。一旦找到第一个命中的正则匹配,立即返回结果并结束解析过程。如果所有正则匹配都未命中,但是有命中的普通匹配,立即返回结果并结束解析过程。 - 如果以上的匹配都未命中,则通用匹配
/命中,立即返回结果并结束解析过程。
参考文献
韩顺平必学必会技术栈-nginx
https://blog.csdn.net/gusushantang/article/details/143746974
https://zhuanlan.zhihu.com/p/464571688
本文来自博客园,作者:不要划水,转载请注明原文链接:https://www.cnblogs.com/shui-notes/p/18697831
浙公网安备 33010602011771号