插件窝 干货文章 nginx怎么跳转

nginx怎么跳转

定向 Nginx server location 873    来源:    2025-04-07

Nginx 跳转配置指南

Nginx 提供了多种方式进行 URL 跳转/重定向,以下是常见的几种方法:

1. 301/302 重定向

单个 URL 重定向

server {
    listen 80;
    server_name example.com;

    # 301 永久重定向
    location /old-url {
        return 301 http://example.com/new-url;
    }

    # 302 临时重定向
    location /temp-redirect {
        return 302 http://example.com/temporary-location;
    }
}

整个域名重定向

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

2. rewrite 指令跳转

server {
    # 重写规则 - 将 /products/123 重写为 /product.php?id=123
    rewrite ^/products/([0-9]+)$ /product.php?id=$1 last;

    # 强制 HTTPS
    if ($scheme != "https") {
        rewrite ^ https://$host$request_uri? permanent;
    }

    # 移除 www 前缀
    rewrite ^(.*) http://example.com$1 permanent;
}

3. 根据条件跳转

server {
    # 根据用户代理跳转
    if ($http_user_agent ~* "bot|spider|crawler") {
        return 403;
    }

    # 根据 IP 跳转
    if ($remote_addr = "192.168.1.100") {
        rewrite ^ /special-page break;
    }
}

4. 反向代理跳转

location /api/ {
    proxy_pass http://backend-server;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

5. try_files 跳转

server {
    location / {
        try_files $uri $uri/ @fallback;
    }

    location @fallback {
        proxy_pass http://backend;
    }
}

注意事项

  1. 301 是永久重定向,302 是临时重定向
  2. rewrite 指令比 return 更灵活但性能略低
  3. 过多使用 if 会影响性能
  4. 修改配置后记得测试并重载 Nginx: bash sudo nginx -t sudo nginx -s reload

需要更具体的跳转场景配置方案,可以告诉我您的具体需求。