服务器80端口,DELETE/PUT请求会重置连接?

新手上路,请多包涵

遇到的问题
最近搭建项目开发测试环境,使用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没打印日志,所以请求信息可能还没到达应用层。
想请大佬们提供下排查的思路,当然如果某位大神知道原因就太好了。

阅读 7.4k
3 个回答

1:查看nginx是否对$request_method 做过限制
2:如果还是不行 也有可能是程序里面做了限制

看一下nginx配置是不是允许delete方法.

你的服务器前端绝对有一个负载均衡服务或其他代理服务,你看下如果是阿里云的话,ip是不是绑在slb上,然后做了端口映射到你服务器。
另外 get post delete方法是http协议规定的请求方法,和nginx无关。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题