Nginx 重定向配置:常用场景与实用示例
|
admin
2025年12月12日 9:49
本文热度 12
|
在日常运维或开发中,Nginx 重定向(Redirect)是非常常见的需求,例如域名跳转、HTTP 转 HTTPS、路径迁移等。本文用最简单的示例,带你快速掌握 Nginx 重定向的核心配置方式。
一、常见的重定向状态码
301 永久重定向
适用于资源永久迁移,例如老域名迁移到新域名。浏览器会缓存结果。
302 临时重定向
适用于临时跳转,例如灰度发布或检查维护。
二、域名跳转(www 与非 www 互转)
非 www → www
server { listen 80; server_name example.com;
return 301 $scheme://www.example.com$request_uri;}
www → 非 www
server { listen 80; server_name www.example.com;
return 301 $scheme://example.com$request_uri;}
三、HTTP 自动跳转到 HTTPS
部署了 HTTPS 后,可将所有 HTTP 请求跳转到 HTTPS:
server { listen 80; server_name example.com www.example.com;
return 301 https://$host$request_uri;}
四、路径级别重定向
单个路径跳转
location /old-path { return 301 /new-path;}
整个目录迁移
location /v1/ { return 301 /v2$request_uri;}
五、正则匹配重定向
当旧路径结构变化较大时,正则非常有用:
location ~ ^/user/(\d+)/profile$ { return 302 /member/$1/info;}
示例:/user/123/profile → /member/123/info
六、使用 rewrite 重定向(带规则处理)
rewrite ^/old/(.*)$ /new/$1 permanent;
permanent 对应 301,可改为 redirect(302)
七、整站跳转到新域名
server { listen 80; server_name old.com www.old.com;
return 301 https://new.com$request_uri;}
八、只重定向 GET 请求(高级用法)
if ($request_method = GET) { return 302 /new-path;}
九、调试技巧:如何验证跳转?
本地可用 curl -I 查看是否返回 301/302:
典型返回:
HTTP/1.1 301 Moved PermanentlyLocation: https://example.com/new
总结
Nginx 的重定向非常灵活,常用配置可以归为三大类:
- return:最简洁,推荐使用
- rewrite:适用于 URL 规则替换
- 正则 location:适用于复杂匹配
如果你正在做 URL 迁移、域名切换、HTTPS 升级,以上示例都可以直接套用。
该文章在 2025/12/12 9:49:48 编辑过