深信服防火墙拦截了DELETE、PUT请求,未达到nginx及后端服务
项目实施过程中,部署线上环境遇到PUT、DELETE的接口,报错502 bad gateway,但是POST、GET所有接口都正常,排查不少时间,都无法解决问题。首先,把系统在本地及测试环境做了多次测试,发现本地及测试环境,都不存在,能正常请求,并且响应200。因此怀疑是nginx问题,因为使用nginx作为反向代理,对nginx做了各种配置修改,仍为解决问题;然后怀疑nginx版本问题,也对nginx版本做了各种升级或者是降低版本,也仍未解决。最终发现是因为深信服防火墙拦截DELETE、PUT请求,未达到nginx及后端服务,修改防火墙配置后,最终得以解决。
解决方法
1.本地测试
DELETE、PUT接口调用正常。
2.测试环境
因为测试环境也是使用nginx代理,DELETE、PUT接口测试也正常。
3.生产环境
a.DELETE、PUT接口测试
测试异常,异常情况如下:
b.nginx日志
查看nginx日志,未发现异常。
c.nginx配置
由于测试环境和开发环境正常,于是怀疑nginx配置问题,修改了各种配置,仍为解决。
d.nginx版本
升级nginx版本或者降低nginx版本,仍为解决。
e.深信服防火墙
由于查看nginx日志未发现任何异常,在日志中未发现接口输出信息,所以怀疑请求未到达nginx,怀疑是安全设备防火墙拦截了请求,因为机房使用的是深信服的安全设备,所以登录防火墙查看相关配置,修改配置后,DELETE、PUT接口请求响应正常。配置修改如下所示:
4.相关大数据学习demo地址:
https://github.com/carteryh/big-data