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证书与域名有强绑定的关系。