全部博文(150)
分类: 系统运维
2017-07-13 15:47:22
某个域名下的http请求都被nginx转发到https端口,并在日志里面报400错误
出错之前的操作
中午吃饭时收到某云的安全通知:nginx的1.12.0版本有个安全漏洞,于是下午升级到1.12.1,升级过程中保持nginx的配置文无改动
检查错误日志,发现日志有些访问是返回200的,看来不是所有请求都被400了
检查后端tomcat,发现无日志被处理,说明nginx没有转发请求过来,那么由此判断此问题基本出在nginx上
ssl on 指令
该指令会开启所在sever{}段落内的ssl,也就是https,即使server{}段落内的listen指令监听的80端口也会启用ssl,于是检查配置文件发现http和https用了一个server{}段落,看来有点眉目,如下所示server { listen 80; server_name some.some.cn ; listen 443; ssl on; }
listen 指令
该指令nginx内部的级别高于server{}段落的,因为listen的无论tcp或者udp端口,都是4层协议,nginx解析的时候优先于7层的协议http的。
include conf.d/*.conf的加载顺序
如果listen指令未配置default_server,那么加载的顺序决定着第一个出现的server{}段落成为默认的server{}段落,那么该段落如果有ssl on指令,就会在具有相同listen ip:port指令的 server{}段落内生效
## http server { listen 80 default_server; server_name some.some.cn ; ...... } ## https server { listen 443; server_name some.some.cn ; ssl on ...... }