Nginx服务器配置请求代理、重定向的具体方法

2026/05/07Nginx 138 阅读

目录请求代理

比如将网站www.abc.com上的图片/uploads目录的请求,代理到图片服务器image.abc.com域名

# 代理 /uploads/ 到 其他域名
location /uploads/ {
    proxy_pass https://image.abc.com;  # 末尾不加斜杠,保留原 URI
    # proxy_pass https://image.abc.com/uploads/;  # 末尾加斜杠,保留后缀 URI
    # 重要:修改 Host 头为目标域名(image.abc.com),否则后端可能无法正确识别
    proxy_set_header Host image.abc.com;
    # 保留真实客户端 IP 等信息
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    # 可选:缓存控制(按需)
    proxy_cache_valid 200 302 1d;
    add_header X-Cache-Status $upstream_cache_status;

    # 如果 image.abc.com 使用自签名证书或需要强制验证,可适当调整 SSL 选项
    # 下面通常无需修改,但若后端证书有问题可临时启用(不推荐生产环境)
    # proxy_ssl_verify off;
    # proxy_ssl_verify_depth 2;

    # 超时设置
    proxy_connect_timeout 30s;
    proxy_read_timeout 30s;

    # 传递 Cookie 等(如果不需要可以不加)
    proxy_pass_request_headers on;

}

举例:https://www.abc.com/uploads/images/20260101/20260101001.jpg的图片链接请求,将会代理到https://image.abc.com/uploads/images/20260101/20260101001.jpg

目录重定向

将指定目录的所有请求,重定向网站首页
location /wp-admin/ {
    return 301 /;
}

举例:/wp-admin/admin.php /wp-admin/themes.php

指定前缀重定向

将含有某个地址前缀的请求,重定向网站首页
location /index.php {
    return 301 /;
}

举例:/index.php /index.php?s=index /index.php/index