现象
我在nginx中,拦截了/api/相关接口,将此链接转到对应的9091端口进行处理。
然后前台调用的时候,返回bad request 400的错误
我将url中api前的端口号,人工加上之后,拼接了127.0.0.1:9091/api/……,测试是成功返回的
但是前台传入的127.0.0.1/api/……,处理失败。
由此,判断是nginx出现了问题
将url中的特殊字符全部删掉,发现nginx是可以正常跳转的,由此判断,是url出现了问题
解决
之前nginx的跳转逻辑如下:
location /api/ {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:9091/;
}
通过查询,发现nginx可以实现不处理url后续的参数,直接转发,将判断逻辑做如下修改
将
proxy_pass http://127.0.0.1:9091/;
改为
if ($request_uri ~* ^/(.*)$) { proxy_pass http://127.0.0.1:9091/$1; }
不对url进行处理
成功回调
版权声明:本文为xuexiiphone原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。