nginx与openssl的整合

这次,业务部门要切换业务,发现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有可能不成功)

然后再进行测试 就成功了。




你可能感兴趣的:(nginx,OpenSSL,整合)