遇到的问题:
最近搭建项目开发测试环境,使用nginx代理,因为比较简单直接使用默认的80端口,GET/POST都很正常,但是在调用DELETE请求时接收不到Response。
环境:
OS:Centos 7.8
nginx:docker部署的最新版本nginx,映射80端口
对比应用:springboot 2.2.5 web应用,代替nginx运行于80端口
排查过程:
1.get/post正常,delete/put nginx未打印日志(错误日志也没有);
2.越过nginx的80端口,直接调用后台服务正常;
3.在我本地curl调用nginx 80端口的delete方法,提示connection was reset;
4.在nginx所在服务器上直接curl调用,正常返回;
5.修改nginx监听端口到非80端口,正常;
6.在80端口启动一个web服务,delete/put同样提示connection was reset;
结论:
经过上面排查,可以确定问题与80端口有很强的关联,目前看来与监听此端口的服务关联性不强。
疑惑:
造成这个问题的原因是什么?
1.服务器未开启防火墙,虽然外部安全策略不清楚,但外部限制的可能性比较小;
2.是否是服务器操作系统对80端口进行了限制,如何查看;
3.应用服务的问题,可能性不大但不排除,nginx没打印日志,所以请求信息可能还没到达应用层。
想请大佬们提供下排查的思路,当然如果某位大神知道原因就太好了。
1:查看nginx是否对$request_method 做过限制
2:如果还是不行 也有可能是程序里面做了限制