- config: 反向代理、缓存、负载均衡、安全、SSL 等配置模板 - lua: API 网关、认证、动态路由、限流、WebSocket 等脚本示例 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
144 lines
3.3 KiB
Plaintext
144 lines
3.3 KiB
Plaintext
# ============================================================
|
||
# Nginx 重定向配置示例
|
||
# ============================================================
|
||
#
|
||
# 功能说明:
|
||
# - HTTP to HTTPS 重定向
|
||
# - 域名重定向
|
||
# - 规范化 URL
|
||
#
|
||
# Lolly 对应配置:
|
||
# server:
|
||
# rewrite:
|
||
# - pattern: "^http://(.*)$"
|
||
# replacement: "https://$1"
|
||
# flag: "permanent"
|
||
# ============================================================
|
||
|
||
http {
|
||
# HTTP to HTTPS 重定向
|
||
server {
|
||
listen 80;
|
||
server_name secure.example.com;
|
||
|
||
# 方式一:rewrite
|
||
rewrite ^(.*)$ https://$host$1 permanent;
|
||
|
||
# 方式二:return(推荐,更高效)
|
||
return 301 https://$host$request_uri;
|
||
}
|
||
|
||
# 域名重定向
|
||
server {
|
||
listen 80;
|
||
server_name old-domain.com;
|
||
|
||
# 重定向到新域名
|
||
return 301 https://new-domain.com$request_uri;
|
||
}
|
||
|
||
# 规范化 URL
|
||
server {
|
||
listen 443 ssl;
|
||
server_name example.com www.example.com;
|
||
|
||
ssl_certificate /etc/nginx/ssl/server.crt;
|
||
ssl_certificate_key /etc/nginx/ssl/server.key;
|
||
|
||
# 移除 www(规范化到无 www)
|
||
if ($host = www.example.com) {
|
||
return 301 https://example.com$request_uri;
|
||
}
|
||
|
||
# 或添加 www(规范化到 www)
|
||
# if ($host = example.com) {
|
||
# return 301 https://www.example.com$request_uri;
|
||
# }
|
||
|
||
location / {
|
||
root /var/www/html;
|
||
}
|
||
}
|
||
|
||
# 移除尾部斜杠
|
||
server {
|
||
listen 80;
|
||
server_name noslash.example.com;
|
||
|
||
# 移除 URL 尾部斜杠(除目录外)
|
||
rewrite ^/(.*)/$ /$1 permanent;
|
||
|
||
location / {
|
||
root /var/www/html;
|
||
}
|
||
}
|
||
|
||
# 强制尾部斜杠(SEO 规范化)
|
||
server {
|
||
listen 80;
|
||
server_name slash.example.com;
|
||
|
||
# 非文件且无斜杠时添加
|
||
if (!-f $request_filename) {
|
||
rewrite ^/(.*[^/])$ /$1/ permanent;
|
||
}
|
||
|
||
location / {
|
||
root /var/www/html;
|
||
}
|
||
}
|
||
|
||
# 基于路径的条件重定向
|
||
server {
|
||
listen 80;
|
||
server_name conditional.example.com;
|
||
|
||
# 维护模式重定向
|
||
location / {
|
||
if ($maintenance_mode) {
|
||
return 302 /maintenance.html;
|
||
}
|
||
proxy_pass http://backend:8080;
|
||
}
|
||
|
||
location = /maintenance.html {
|
||
root /var/www/maintenance;
|
||
}
|
||
}
|
||
}
|
||
|
||
# 重定向说明:
|
||
#
|
||
# 1. 301 vs 302:
|
||
# - 301 永久重定向:
|
||
# 搜索引擎更新索引
|
||
# 浏览器缓存重定向
|
||
# 用于永久性变更(域名迁移)
|
||
# - 302 临时重定向:
|
||
# 搜索引擎保持原 URL
|
||
# 浏览器每次都请求
|
||
# 用于临时变更(维护、测试)
|
||
#
|
||
# 2. HTTP to HTTPS:
|
||
# 推荐使用 return 而非 rewrite:
|
||
# - return 更高效(不解析正则)
|
||
# - 直接返回响应
|
||
# - 保持原始请求 URI
|
||
#
|
||
# 3. 规范化:
|
||
# URL 规范化防止:
|
||
# - 重复内容问题(SEO)
|
||
# - 缓存失效
|
||
# - 站点统计混乱
|
||
#
|
||
# 规范化类型:
|
||
# - www vs non-www
|
||
# - 尾部斜杠
|
||
# - HTTP vs HTTPS
|
||
# - 路径大小写
|
||
#
|
||
# 4. Lolly 支持:
|
||
# - rewrite 配置列表
|
||
# - 支持所有 flag 参数
|
||
# - 正则表达式匹配
|
||
# - 捕获组引用 |