nginx因客户端缓存报400错误解决办法
2018-02-22 本文已影响14人
MatthewSp
起因:
域名切换对应的服务器,导致阿里后台/微信后台在异步通知时,请求的头文件带缓存,致使nginx的日志获取头文件为空/“-”。查看nginx日志如下所示:
nginx图示(搬运)解决办法1:
傻乎乎等别人家的后台耐不住寂寞,刷新缓存。
解决办法2:
为nginx添加名称为“-”的虚拟服务器,进而允许该访问路径。
切勿遗漏“default_server”ex: 有一定的潜在危险。
原因分析:
http1.1的标准规定请求必须包含头部信息,如果请求头为空那么web server直接返回400,详细可以看RFC文档RFC 2316, section 14.23
除了上面这种telnet方式可能造成空请求头外,当浏览器下载图片的同时点击别的链接,会关闭下载连接,也会出现空请求头,再或者机器人构造的空请求头访问。