Nginx的Rewrite模块(ngx_http_rewrite_module
)是一个功能强大的工具,主要用于URL重写、重定向和条件判断。以下是其典型的应用场景及示例:
nginx
rewrite ^/product/([0-9]+)/?$ /product.php?id=$1 last;
/product/123
重写为 /product.php?id=123
。nginx
if ($scheme != "https") {
rewrite ^ https://$host$request_uri permanent;
}
nginx
rewrite ^(.*)$ https://newdomain.com$1 permanent;
/
、大小写转换)。nginx
rewrite ^/([^/]*[^/])$ /$1/ permanent; # 自动补全末尾斜杠
rewrite (?i)^/oldpath /newpath; # 忽略大小写重定向
nginx
rewrite ^/search/(.*)/page/([0-9]+)$ /search.php?q=$1&page=$2? last;
nginx
location ~* \.(jpg|png)$ {
valid_referers none blocked *.example.com;
if ($invalid_referer) {
rewrite ^ /blocked.png;
}
}
nginx
if ($http_user_agent ~* "mobile") {
rewrite ^ /mobile/ redirect;
}
nginx
rewrite ^/old-page.html$ /new-page permanent;
nginx
rewrite ^/service/(.*)$ /backend-$1 break;
proxy_pass http://backend_pool;
nginx
if ($args ~* "script|select|drop") {
rewrite ^ /403.html last;
}
location
匹配。last
、break
、redirect
、permanent
需谨慎使用,避免死循环。nginx -t
验证配置,或通过在线工具(如RegExr)测试正则表达式。通过灵活组合Rewrite规则,可以高效解决URL管理、SEO优化、安全防护等多种需求。