NGINX location 详细规则
时间: 2024-08-13 20:08:50 浏览: 54
NGINX的location指令是配置文件中的关键部分,用于定义服务器或虚拟主机上URL路径(URI)与处理请求的特定块之间的映射关系。location规则是基于URI路径、正则表达式、主机名、端口号等条件来匹配请求的。以下是location规则的一些详细规则:
1. **基本语法**:
```
location /path/ {
// 处理规则
}
```
这里 `/path/` 是路径,所有匹配该路径的请求将被这里的配置处理。
2. **路径匹配**:
- **精确匹配**: `/file.html` 会精确匹配到指定的文件。
- **通配符**: `*`, `**` 用于匹配任意路径和目录,如 `/images/*` 匹配 `/images/file.jpg`。
3. **正则表达式匹配**:
使用 `~` 或 `~*` 符号可以使用正则表达式进行路径匹配。例如 `location ~ \.php$ {}` 可以匹配所有以 `.php` 结尾的路径。
4. **主机名和端口匹配**:
- `host`: `location = /path/ { ... }` 只对特定主机生效。
- `$host`: `location = $host/path/ { ... }` 对当前请求的主机生效。
- `server_name`: 配置虚拟主机时,可以指定多个域名或通配符。
5. **路径后缀匹配**:
`try_files` 命令用于尝试查找文件的位置,如果第一个位置不存在,则尝试下一个。例如:
```
try_files $uri $uri/ =404;
```
6. **条件指令**:
- `if` 语句可以用来根据条件动态改变location的行为。
- `break` 和 `return` 关键字用于跳出当前location或整个location块。
7. **内置变量**:
可以使用 `$request_uri`, `$document_root`, `$scheme` 等内置变量进行匹配或处理。
阅读全文