Nginx反向代理外部URL重写 路径参数转查询参数配置报错
Nginx反向代理路径重写配置方案
原配置错误原因
- Nginx配置文件中不需要对
&做HTML转义,原配置中写的&属于错误写法,直接使用&即可 - 当
proxy_pass中使用变量拼接目标地址时,必须显式配置resolver(DNS解析器),否则Nginx无法正常解析目标域名,会直接返回错误 - 正则匹配使用
*允许空段,不符合你给出的示例请求规则,容易匹配到无效路径
正确配置
server { listen 80; server_name myapp.com; # 配置DNS解析器,可替换为内网DNS或者其他公共DNS resolver 8.8.8.8 valid=300s; resolver_timeout 5s; location ~ ^/([0-9]+)/([0-9]+)/([a-zA-Z]+)$ { # 拼接目标地址,? 表示后续为查询参数,若后端不需要?可直接删除 proxy_pass https://example.com/?id=$1&p=$2&name=$3; # 通用代理头配置,可保留原始请求信息 proxy_set_header Host $host; 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_redirect off; } }
生效验证
配置修改完成后,先执行nginx -t检查语法是否正确,确认无报错后执行nginx -s reload重载配置即可生效。
内容的提问来源于stack exchange,提问作者jacob
相关产品推荐
相关产品推荐

