请求url:10.192.1.1:8080/demo/test/%2F%2Fabc.txt
nginx转发目标服务:10.192.1.1:80/test/%2F%2Fabc.txt
nginx配置如下所示:
location ~ /demo/ {
#重写转发
rewrite ^/demo(/:|//)+ $1 permanent;
proxy_pass http://10.192.1.1/;
}
问题:rewrite似乎将请求中的%2F弄丢了,实际转发的地址:http://10.192.1.1/test/a.txt
这个问题如何处理?
nginx转发后,URL中的%2F消失
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 肾透侧视攻城狮 2024-08-13 19:29关注
帅哥,望采纳一下,我拿个牌不容易啊
rewrite 指令中的 $1 可能会在转换时丢失 URL 编码修改 Nginx 配置
修改 rewrite 规则:使用正则表达式确保只去掉 /demo 前缀,而不干扰 URL 编码中的其他部分。
使用 proxy_pass 时,要注意保留重写后的 URI。中的 %2F。
配置示例location /demo/ { # 处理 URL 编码 rewrite ^/demo(/.*)$ $1 break; proxy_pass http://10.192.1.1; }
这里的关键点:
^/demo(/.*)$ 匹配 /demo/ 后面的所有内容,并捕获它。
$1 是捕获组中的内容,即 /test/%2F%2Fabc.txt。
break 用于停止进一步的重写处理,并将修改后的 URI 传递给 proxy_pass。完整配置
假设你的目标是将所有 /demo/ 开头的请求转发到后端服务器,并保持原始 URL 编码:server { listen 8080; location /demo/ { # 重写规则 rewrite ^/demo(/.*)$ $1 break; # 转发请求到目标服务 proxy_pass http://10.192.1.1; } }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 为什么在iis上部署网站,服务器可以访问,但是本地电脑访问不了
- ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
- ¥15 ADS时域 连续相位观察方法
- ¥15 Opencv配置出错
- ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
- ¥15 气象网格数据与卫星轨道数据如何匹配
- ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
- ¥15 微软账户问题不小心注销了好像
- ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
- ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused