温馨提示×

linux nginx怎么实现重定向

小樊
51
2026-09-29 03:17:26
栏目: 智能运维

在 Linux 下使用 Nginx 实现重定向,通常是通过修改 Nginx 的配置文件(如 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/*.conf、sites-enabled/*)来完成的。下面按常见场景给你说明。


一、Nginx 重定向基本方式

Nginx 重定向主要有两种方式:

  1. return(推荐,简单高效)
  2. rewrite(更灵活,适合复杂规则)

二、常见重定向场景示例

1️⃣ 裸域名 → www 域名(301 永久重定向)

server {
    listen 80;
    server_name example.com;
    return 301 http://www.example.com$request_uri;
}

✅ 访问 example.com/abc → www.example.com/abc


2️⃣ http → https(强制 HTTPS)

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

3️⃣ https 非 www → https www

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate     /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    return 301 https://www.example.com$request_uri;
}

4️⃣ 旧路径 → 新路径

server {
    listen 80;
    server_name example.com;

    location = /old.html {
        return 301 /new.html;
    }
}

5️⃣ 使用 rewrite 实现重定向

server {
    listen 80;
    server_name example.com;

    rewrite ^/old/(.*)$ /new/$1 permanent;
}
  • permanent = 301
  • redirect = 302

6️⃣ 整个站点跳转到另一个域名

server {
    listen 80;
    server_name old.com;
    return 301 https://new.com$request_uri;
}

三、配置后必须做的操作

1️⃣ 检查配置是否正确

nginx -t

2️⃣ 重新加载 Nginx

systemctl reload nginx
# 或
nginx -s reload

四、301 和 302 的区别

类型 含义 使用场景
301 永久重定向 SEO、域名变更
302 临时重定向 临时维护、A/B 测试

五、调试小技巧

  • 浏览器用 隐身模式(避免缓存)
  • 使用 curl 测试:
curl -I http://example.com

如果你能告诉我:

  • 是 http/https
  • 是否涉及 www
  • 是 整站还是某个路径

我可以直接给你一份可用的 Nginx 配置。

0 踩