一 location
location最佳实践参考
深入理解location匹配规则
一文理清nginx中的location配置
location讲解最好的博客
URL是如何关联location配置块的
① 第一部分
- location指令的作用: 是根据'用户请求的URI'来匹配'location',匹配'success'则执行对应的'configure'配置块
-
- 实质: '$uri[不携带查询参数]'与'location path'进行匹配
- ++++++++++++ '几种符号的理解' ++++++++++++
-
- (1) '前缀'匹配
-
- '空':表示'前缀'匹配
-
- '=': 表示'精准'匹配,必须'完全一致才会停止'匹配其它的location
-
- '^~':也是'前缀'匹配,但是如果请求一旦'匹配'后会立即处理,'停止匹配'其它的location
-
- (2) '正则'匹配
-
- '~':区分'大小写'
-
- '~*':不区分大小写
-
- (3) '命名'匹配
-
- 应用场景:'error_page'和'try_files'指令可以使用
-
- 关注点:什么是'prefix string'?、什么是'regular expression'? --> "对应哪些修饰符"?
-
- ++++++++++++ '优先级问题' ++++++++++++
-
- 注意:不是按照'nginx.conf'配置文件的'location'先后顺序匹配的
-
- (1) 首先'='精准匹配,匹配成功立即'处理并且停止'location继续匹配
-
- (2) 如果没有精准匹配,会进行'前缀匹配'(空和^~),^~匹配上也会立即'处理并且停止'location继续匹配,但是空会'先暂存'结果去匹配
-
- (3) 如果'='和'^~'都没有匹配上,暂时'不管空',如果'有正则'匹配
-
- -- 则先看'~*'匹配即停止、没有匹配上则看'~'匹配即停止
-
- (4) 如果没有正则匹配,则就'匹配'之前的'空暂存'结果["最长前缀字符的location"];如果之前的'空'也没有匹配,则返回'404'
-
- 遗留: 什么叫作'最长prefix匹配'? -->多个'空暂存'的'最长'匹配
-
- 疑惑: 对于'regular expression'是采用'优先'匹配,也就是'第一个匹配到'的就是匹配结果,不考虑'~'和'~*'优先级吗?
② 第二部分
③ 第三部分
最佳案例讲解
++++++++++++++++"解读如下"++++++++++++++++
④ 第四部分 location @
- 1: '修饰符@'用于定义一个'内部' location 块,该块'不能'被外部 client '直接'访问
-
- 2: 只能被 nginx '内部配置指令'所访问:比如 'try_files' 或者'error_page'
-
- 备注:'internal'也是'同样'的效果
-
- 重定向和请求转发的区别 --> "地址栏是否发生变化"
重定向和请求转发的区别
- +++++++++++ @分割线 +++++++++++
-
- location 的'内部跳转'匹配符号'@':
-
- location /index/ {
- error_page 404 @index_error;
- }
-
- location @index_error {
- .....
- }
-
- 解读:以 /index/ 开头的请求,如果'现状态码是 404',则会匹配到 @index_error 这条'规则'上
⑥ location匹配小结
1)匹配顺序
2)注意事项
3)建议
⑦ 加不加/问题
纠正: '/user'和'/user/'有区别的 --> /user会'返回301'和 'user/ 重定向'
⑧ 参考
更详细的正则匹配
nginx 的location详细理解
nginx的正则表达
nginx 下 location 某个文件夹下某类文件
Nginx location 匹配规则
sub_filter
</article>