- HTTP 跳转到 HTTPS
将所有 HTTP 请求(80 端口)跳转到 HTTPS(443 端口):
server {listen 80;server_name example.com;# 跳转到 HTTPSreturn 301 https://$host$request_uri;
}server {listen 443 ssl;server_name example.com;ssl_certificate /path/to/certificate.crt;ssl_certificate_key /path/to/private.key;location / {# 正常处理 HTTPS 请求proxy_pass http://backend_server;}
}
- 域名跳转
将一个域名的请求跳转到另一个域名:
server {listen 80;server_name old-domain.com;# 跳转到新域名return 301 https://new-domain.com$request_uri;
}
- 路径跳转
将某个路径的请求跳转到另一个路径:
server {listen 80;server_name example.com;# 跳转到新路径location /old-path {return 301 https://example.com/new-path;}
}
- 临时跳转(302)
使用 302 状态码实现临时跳转:
server {listen 80;server_name example.com;# 临时跳转return 302 https://example.com/new-path;
}
- 基于条件的跳转
根据条件(如用户 IP、请求头等)实现跳转:
server {listen 80;server_name example.com;# 根据用户 IP 跳转if ($remote_addr = "192.168.1.100") {return 301 https://example.com/special-page;}# 根据 User-Agent 跳转if ($http_user_agent ~* "Mobile") {return 301 https://m.example.com;}
}
- 跳转并保留查询参数
跳转时保留 URL 中的查询参数:
server {listen 80;server_name example.com;# 跳转并保留查询参数return 301 https://example.com/new-path$is_args$args;
}
- 跳转到外部 URL
跳转到一个外部 URL:
server {listen 80;server_name example.com;# 跳转到外部 URLreturn 301 https://external-site.com;
}
- 跳转并设置自定义响应头
在跳转时设置自定义响应头:
server {listen 80;server_name example.com;# 设置自定义响应头add_header X-Custom-Header "Custom Value";# 跳转return 301 https://example.com/new-path;
}
- 跳转并记录日志
在跳转时记录日志:
server {listen 80;server_name example.com;# 记录跳转日志access_log /var/log/nginx/redirect.log;# 跳转return 301 https://example.com/new-path;
}
- 跳转并禁用缓存
在跳转时禁用缓存:
server {listen 80;server_name example.com;# 禁用缓存add_header Cache-Control "no-cache, no-store, must-revalidate";add_header Pragma "no-cache";add_header Expires "0";# 跳转return 301 https://example.com/new-path;
}