Nginx反向代理部分接口出现404报错
一、背景
前端和后端部署在不同的服务器,在前端服务器使用Nginx做反向代理访问后端,但有部分接口出现404报错,如图:
二、原因
数据集PID86.10358.231/fb514791-87e0-4168-8500-ff8d05add62c
,含有特殊字符"/",
在没有代理的情况下,前端会把特殊字符"/"转义为"%2F",生成的URL为:
http://202.38.77.91/api/v3/Datasets/86.10358.231%2Ffb514791-87e0-4168-8500-ff8d05add62c/thumbnail 复制代码
但Nginx拦截了该URL,并在反向代理时,解释转义字符,URL就变成了:
http://192.168.123.21:3000/api/v3/Datasets/86.10358.231/fb514791-87e0-4168-8500-ff8d05add62c/thumbnail 复制代码
后端没有这个接口http://192.168.123.21:3000/api/v3/Datasets/86.10358.231/
,出现404报错。
三、解决
需要在Nginx配置文件中,加一个特殊的拦截规则:
location /api/v3/Datasets/86.10358.231/ { proxy_pass http://192.168.123.21:3000/api/v3/Datasets/86.10358.231%2F/ } 复制代码
四、总结
这种情况并没有普遍性,在此只是做个记录。
作者:用户9874739818067
链接:https://juejin.cn/post/7035897359368192007