windows2008r2、nginx、iis7.5实现多个ssl证书和https域名部署
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2018-12-16 16:12:39
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章
问题描述
正常情况下iis只能有一个443端口来实现https访问,一般都是用一个泛域名证书来实现同一个服务器多个域名的部署,但是现在网络上免费的证书都是一证一域的情况,iis只能配置一个域名来访问,
另外在网络上找到的一个方法是使用iis8(windows2012)来部署sni可以实现,对我来说成本有点大,于是就另找方法,nginx有反向代理的功能,说白啦就是说让有请求过来的时候它可以根据当前请求的信息来转发到不同的服务进行处理,
实现方法
让nginx来接管80和443端口的请求,同时别忘了把iis的443和80端口换成其它的端口。比如555和8080,(如果占用啦这些端口的话)
服务器80端口的处理
当nginx80端口接到请求的时候根据当前请求的域名信息来转发到对应的iis请求就可以啦。比如iis的站点 www.aaa.com:8080 因为端口我们已经改为8080啦要记得带上,下面是nginx的配置
server { listen 80; server_name www.aaa.com; location / { proxy_pass http://www.aaa.com:8080; index index.html index.php index.htm; } }
有其它的网站的话类似添加就可以,
服务器443(https)端口的处理
443处理的情况分两种,
一种是nginx的https转发到iis的https
这种方法还得配置iis的https证书,有点麻烦,不推荐使用,但是这里也给记录下,
iis中添加https站点时是不能用443端口的因为443分配给啦nginx所以添加站点的时候443换成其它的比如444 555等,多个https站点就添加多个每个端口写的不一样就ok
这个时候iis中访问的时候是 https://www.bbb.com:555 让用户用这样的地址访问肯定是不行的,使用nginx给转发一下
server { listen 443 ssl; server_name www.bbb.com; resolver 114.114.114.114 223.5.5.5 valid=3600s; #ssl on; ssl_certificate cert/1_www.bbb.com.crt; ssl_certificate_key cert/2_www.bbb.com.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; #charset koi8-r; #access_log logs/$host.access.log main; location / { proxy_pass https://www.bbb.com:555; index index.html index.htm; } }
另一种是nginx的https请求转发到iis的http请求
很明显,这种方法是最简单的啦,iis上面就不用配置https啦,就正常的处理就行如下;
server { listen 443 ssl; server_name www.bbb.com; resolver 114.114.114.114 223.5.5.5 valid=3600s; #ssl on; ssl_certificate cert/1_www.bbb.com.crt; ssl_certificate_key cert/2_www.bbb.com.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; #charset koi8-r; #access_log logs/$host.access.log main; location / { proxy_pass http://www.bbb.com:8080; index index.html index.htm; } }
到此功能就全实现啦,另外注意点 8080和555 666 等端口不用设置为外网访问,外网访问还是只有80 和443就可以啦,,