location 指令是 Nginx 配置中非常重要的部分,用于匹配 URI 并定义如何处理请求。下面我将详细介绍 location 的配置方法。
location [修饰符] 匹配模式 {
# 配置指令
}
location = /exact/path {
# 仅匹配 /exact/path
}
location /prefix {
# 匹配以 /prefix 开头的 URI
}
location ~ \.php$ {
# 区分大小写的正则匹配 .php 结尾的 URI
}
location ~* \.(jpg|jpeg|png)$ {
# 不区分大小写的正则匹配图片文件
}
location !~ \.php$ {
# 区分大小写的不匹配 .php 结尾的 URI
}
location ^~ /images/ {
# 匹配以 /images/ 开头的最长前缀,不检查正则表达式
}
Nginx 按以下顺序检查 location:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
access_log off;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location /old/ {
rewrite ^/old/(.*)$ /new/$1 permanent;
}
location ~ /\.ht {
deny all;
}
location / {
# 主配置
location /images/ {
# 专门处理 /images/ 下的请求
}
}
location / {
try_files $uri $uri/ @fallback;
}
location @fallback {
proxy_pass http://backend;
}
location / {
set $my_var "some_value";
if ($http_user_agent ~* "mobile") {
set $my_var "mobile_value";
}
}
nginx -t
检查语法通过合理配置 location,你可以精确控制 Nginx 如何处理各种请求,实现灵活的 URL 路由和内容分发。