如何配置Nginx反向代理实现带指定来源信息的URL重定向
Nginx反向代理实现带指定Referrer/Origin的URL重定向配置
核心配置思路
通过正则匹配捕获/redirect/后的目标URL,解码后发起重定向,并在响应头中注入自定义的Referrer和Origin信息,同时可添加安全限制避免开放重定向风险。
基础配置示例
server { listen 80; server_name example.com; location ~ ^/redirect/(.*) { # 捕获redirect后的完整目标URL set $target_url $1; # 解码URL中的转义字符(需Nginx ≥1.17.10) set_decoded_uri $decoded_url $target_url; # 发送临时重定向响应 return 302 $decoded_url; # 注入自定义Referrer和Origin头 add_header Referrer "https://your-specified-referrer.com"; add_header Origin "https://your-specified-origin.com"; # 可选:控制Referrer发送策略 add_header Referrer-Policy "origin-when-cross-origin"; } }
配置细节说明
- URL捕获与解码:
location ~ ^/redirect/(.*)通过正则捕获/redirect/后的所有内容作为目标URL;set_decoded_uri用来解码URL中的转义字符(如%3F对应?、%26对应&),确保重定向地址正确。若你的Nginx版本低于1.17.10,可改用rewrite ^/redirect/(.*)$ $1? break;替代解码步骤。 - 重定向类型:使用
302临时重定向,若需永久重定向可替换为301,但临时重定向更适合动态调整的场景。 - 自定义头注入:
add_header指令直接添加指定的Referrer和Origin,替换为你实际需要的地址即可,格式需符合URL规范(如https://xxx.com)。 - Referrer策略:
Referrer-Policy可选配置,用来约束浏览器发送Referrer的行为,可根据需求选择strict-origin-when-cross-origin、no-referrer等策略。
安全增强配置(可选)
为避免被利用进行恶意跳转,可限制目标URL仅允许指定域名:
location ~ ^/redirect/(https?://(google\.com|your-trusted-domain\.com)/.*) { set_decoded_uri $decoded_url $1; return 302 $decoded_url; add_header Referrer "https://your-specified-referrer.com"; add_header Origin "https://your-specified-origin.com"; }
该配置仅允许跳转到google.com或指定可信域名,有效防范开放重定向漏洞。
内容的提问来源于stack exchange,提问作者leshcode
相关产品推荐
相关产品推荐

