服务器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没打印日志,所以请求信息可能还没到达应用层。
想请大佬们提供下排查的思路,当然如果某位大神知道原因就太好了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
1:查看nginx是否对$request_method 做过限制
2:如果还是不行 也有可能是程序里面做了限制
看一下nginx配置是不是允许delete方法.
你的服务器前端绝对有一个负载均衡服务或其他代理服务,你看下如果是阿里云的话,ip是不是绑在slb上,然后做了端口映射到你服务器。
另外 get post delete方法是http协议规定的请求方法,和nginx无关。