这次,业务部门要切换业务,发现https业务切换到新环境以后,一直报400的错误。
nginx版本用的是nginx-1.7.12
openssl版本用 的是openssl-1.0.1d
失败的ssl服务器 A 在线的SSL服务器 B
当时出错的现象是 日志
|[19/Jan/2016:13:26:34 +0800]|zhao.gyyx.cn|GyET /oauth2/stat.aspx HTTP/1.1|0|0.006|"400"| |[19/Jan/2016:13:26:37 +0800]|zhao.gyyx.cn|G\x8EET /favicon.ico HTTP/1.1|0|0.006|"400"|16
发现get方法被改写成乱码了。然后报400错误。
但是,令人奇怪的是:
1,找一台跟ssl服务器互通的linux机器,进行绑定hosts进行测试。
用curl直接抓取 就是200的返回码,
但是用 curl -x IP:port 就是400的错误失败。
2.在windows上进行绑定hosts测试,用浏览器打开页面 也是400错误
查看nginx配置文件以及nginx的安装编译参数,确定ssl服务器 A B两台服务器的nginx.conf配置一样。编译参数一样。除了ssl域名其他虚拟主机访问都没有问题。
开始头疼
各种测试,重新安装。
最后结果是 nginx编译安装之前把openssl make install了。
其实正常的nginx与openssl的整合过程应该是这样的。
下载openssl的源码包,然后解压到指定目录,不用编译安装
然后把nginx进行编译安装的时候,--with-openssl=/usr/local/src/openssl-1.0.1q直接指向源码包就可以了。在nginx./configure;make;make install;的时候,就会直接把openssl进行同步的编译了
nginx编译安装以后,进行ssl的配置,最后把nginx进行restart (注:reload有可能不成功)
然后再进行测试 就成功了。
本文出自 “飘客” 博客,请务必保留此出处http://zhqaihnn.blog.51cto.com/5257485/1736695
原文:http://zhqaihnn.blog.51cto.com/5257485/1736695