nginx路径声明方式

在nginx的configure文件中,有一系列如下命令

have=NGX_SBIN_PATH value="\"$NGX_SBIN_PATH\"" . auto/define
have=NGX_CONF_PATH value="\"$NGX_CONF_PATH\"" . auto/define
have=NGX_PID_PATH value="\"$NGX_PID_PATH\"" . auto/define
have=NGX_LOCK_PATH value="\"$NGX_LOCK_PATH\"" . auto/define
have=NGX_ERROR_LOG_PATH value="\"$NGX_ERROR_LOG_PATH\"" . auto/define

have=NGX_HTTP_LOG_PATH value="\"$NGX_HTTP_LOG_PATH\"" . auto/define
have=NGX_HTTP_CLIENT_TEMP_PATH value="\"$NGX_HTTP_CLIENT_TEMP_PATH\""
. auto/define
have=NGX_HTTP_PROXY_TEMP_PATH value="\"$NGX_HTTP_PROXY_TEMP_PATH\""
. auto/define
have=NGX_HTTP_FASTCGI_TEMP_PATH value="\"$NGX_HTTP_FASTCGI_TEMP_PATH\""
. auto/define
have=NGX_HTTP_UWSGI_TEMP_PATH value="\"$NGX_HTTP_UWSGI_TEMP_PATH\""
. auto/define
have=NGX_HTTP_SCGI_TEMP_PATH value="\"$NGX_HTTP_SCGI_TEMP_PATH\""
. auto/define

在./auto/define中,有如下方式定义

#ifndef $have
#define $have  $value
#endif
### Nginx 中 location 指令的匹配规则 #### 语法基础 Nginx 的 `location` 指令用于定义如何处理来自客户端的不同 URL 请求。这些指令可以基于 URI 进行精确匹配、最长前缀匹配以及正则表达式匹配等多种方式来决定哪个配置块应该被应用。 #### 匹配规则 ##### 精确匹配 (`=`) 当使用等号作为修饰符时,表示只匹配完全相同的字符串。一旦找到这样的位置,就立即停止搜索并执行相应的配置[^3]。 例如: ```nginx location = /exact/path { # 配置项... } ``` ##### 最长前缀匹配 (`^~`) 此模式会寻找以指定路径开头的最佳匹配,并忽略后续可能存在的更具体但不是最短的前缀匹配。它不会考虑任何正则表达式的优先级。 例子如下所示: ```nginx location ^~ /longest/prefix/match { # 配置项... } ``` ##### 正则表达式匹配 (`~` 和 `~*`) 波浪线后面跟大小敏感或不敏感的 Perl 兼容正则表达式 (PCRE),分别由 `~` 或者 `~*` 表示。所有符合条件的位置都会按照它们出现的顺序依次尝试直到成功为止;如果多个都适用,则最后一个会被采用。 实例代码片段: ```nginx location ~ \.(php|html)$ { # 处理 PHP 文件或其他扩展名结尾的内容... } location ~* \.(jpg|jpeg|png|gif)$ { expires max; log_not_found off; } ``` ##### 普通前缀匹配 (无修饰符) 如果没有特殊字符存在,默认情况下就是普通的前缀匹配逻辑——即只要请求 URI 开始于给定字符串即可触发该规则。这种类型的匹配会在整个过程中持续参与竞争最佳匹配的选择过程,除非遇到更高优先级的方式如上述提到过的几种情况之一。 简单案例展示: ```nginx location /basic/prefix { # 对应于 "/basic/prefix" 及其子目录下的资源... } ``` ##### 默认匹配 (`/`) 这是指定了根路径 `/` 的一种形式,通常用来捕获那些未能与其他更为特定条件相吻合的一般性流量。值得注意的是,在某些版本里这可能是唯一未显式声明却始终有效的隐含选项。 典型的应用场景为: ```nginx location / { try_files $uri $uri/ =404; } ``` #### 使用注意事项 - 如果有多个相同类型的匹配器适用于同一个请求URL,则按文件中的先后次序选取最先命中的那个。 - 当同时存在多种不同类别的匹配机制时,遵循以下优先级:= > ^~ > regex > prefix。 - 在实际部署环境中测试各种组合的效果非常重要,因为细微差别可能导致意料之外的行为变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值