windows2008r2、nginx、iis7.5实现多个ssl证书和https域名部署

来源:赵克立博客 分类: Linux 标签:--发布时间:2018-05-19 16:01:07最后更新:2018-12-16 16:12:39浏览:5020
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。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

image.png

这个时候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就可以啦,,


微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python