1.首先来讲,需要实现nginx免证书代理,必须要启用stream模块。steam模块只有在nginx1.9.0版本之后才支持。stream模块用来实现四层协议的转发、代理或者负载均衡等



2.编辑nginx.cnf文件,在文件最后加入stream模块的配置,并且可以通过监听不通端口代理转发不同的服务器或域名。

   stream模块用法和http模块差不多,关键的是语法几乎一致。


例如:

stream{
       server {
         listen  0.0.0.0:443;
         proxy_connect_timeout 20s;
         proxy_timeout 6m;
         proxy_pass sdk.xylink.com:443;

}
      server {
         listen  0.0.0.0:8443;
         proxy_connect_timeout 20s;
         proxy_timeout 6m;
         proxy_pass sina.cn:443;

}
      server {
         listen  0.0.0.0:9443;
         proxy_connect_timeout 20s;
         proxy_timeout 6m;
         proxy_pass qq.com:443;

}
}

3.还需要说明的是,如果此时客户端通过访问nginx的IP去访问被代理的https服务器,是会出现证书不受信任的提示。解决办法就是在客户端的hosts文件上增加nginx _ip  被访问的域名(主机名)的解析,并且客户端采取的是域名访问的方式,而不是输入nginx代理的方式。因为实际上SSL证书与域名有强绑定的关系。