当前位置 主页 > 服务器问题 > nginx问题汇总 >

nginx 多个HTTPS主机如何配置在同一个IP上?

栏目:nginx问题汇总 时间:2018-11-30 15:31

  公司域名更变,同时,又要新旧域名同时运行。 那么,对于https的域名在同一个IP上如何同时存在多个虚拟主机呢?遂,查看了下nginx手册,有这么一段内容,如下:
  如果在同一个IP上配置多个HTTPS主机,会出现一个很普遍的问题:
  server {
  listen          443;
  server_name     www.example.com;
  ssl             on;
  ssl_certificate www.example.com.crt;
  ...
  }
  server {
  listen          443;
  server_name     www.example.org;
  ssl             on;
  ssl_certificate www.example.org.crt;
  ...
  }
  使用上面的配置,不论浏览器请求哪个主机,都只会收到默认主机www.example.com的证书。这是由SSL协议本身的行为引起的——先建立SSL连接,再发送HTTP请求,所以nginx建立SSL连接时不知道所请求主机的名字,因此,它只会返回默认主机的证书。
  最古老的也是最稳定的解决方法就是每个HTTPS主机使用不同的IP地址:
  server {
  listen          192.168.1.1:443;
  server_name     www.example.com;
  ssl             on;
  ssl_certificate www.example.com.crt;
  ...
  }
  server {
  listen          192.168.1.2:443;
  server_name     www.example.org;
  ssl             on;
  ssl_certificate www.example.org.crt;
  ...
  }
  那么,在同一个IP上,如何配置多个HTTPS主机呢?
  nginx支持TLS协议的SNI扩展(Server Name Indication,简单地说这个扩展使得在同一个IP上可以以不同的证书serv不同的域名)。不过,SNI扩展还必须有客户端的支持,另外本地的OpenSSL必须支持它。
  如果启用了SSL支持,nginx便会自动识别OpenSSL并启用SNI。是否启用SNI支持,是在编译时由当时的 ssl.h 决定的(SSL_CTRL_SET_TLSEXT_HOSTNAME),如果编译时使用的OpenSSL库支持SNI,则目标系统的OpenSSL库只要支持它就可以正常使用SNI了。
  nginx在默认情况下是TLS SNI support disabled。
  启用方法:
  需要重新编译nginx并启用TLS。步骤如下:
  # wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz
  # tar zxvf openssl-1.0.1e.tar.gz
  # ./configure --prefix=/usr/local/nginx --with-http_ssl_module \
  --with-openssl=./openssl-1.0.1e \
  --with-openssl-opt="enable-tlsext"
  # make
  # make install
  查看是否启用:
  # /usr/local/nginx/sbin/nginx -V
  TLS SNI support enabled
  这样就可以在 同一个IP上配置多个HTTPS主机了。
  实例如下:
  server  {
  listen 443;
  server_name   www.ttlsa.com;
  index index.html index.htm index.php;
  root  /data/wwwroot/www.ttlsa.com/webroot;
  ssl on;
  ssl_certificate "/usr/local/nginx/conf/ssl/www.ttlsa.com.public.cer";
  ssl_certificate_key "/usr/local/nginx/conf/ssl/www.ttlsa.com.private.key";
  ......
  }
  server  {
  listen 443;
  server_name   www.heytool.com;
  index index.html index.htm index.php;
  root  /data/wwwroot/www.heytool.com/webroot;
  ssl on;
  ssl_certificate "/usr/local/nginx/conf/ssl/www.heytool.com.public.cer";
  ssl_certificate_key "/usr/local/nginx/conf/ssl/www.heytool.com.private.key";
  ......
  }
  这样访问每个虚拟主机都正常。
缩小 缩小 缩小 缩小
IIS7整站下载工具 IIS7批量查询排名 IIS7远程桌面连接工具 iis7-iis网站批量管理 iis7批量替换工具 IIS7服务器专用下载工具 IIS7日志分析工具 IIS7批量PING,服务器批量添加网卡IP小工具 IIS7远程同步备份工具
IIS7网站监控 站群批量SEO查询 批量获取排名域名 批量关键词排名查询 模拟各种蜘蛛 批量友情链接监测 批量检测死链 搜索引擎大全 批量查询外链
批量查询网站标题 批量查询KeyWords 批量查询描述 批量查询网站IP 批量百度收录查询 批量查询百度日收录 批量查询百度周收录 批量查询百度月收录 批量查询360总收录 批量查询360日收录 批量查询网站年龄 批量查询360PC权重 批量查询爱站移动权重 批量查询站长移动权重 批量查询360移动权重 批量查询神马权重 批量查询谷歌PR 批量查询搜狗PR 批量查询百度反链 批量查询爱站首页反链 批量查询爱站内页反链 批量查询百度快照 批量查询搜狗快照 批量icp备案查询 批量网站ip地址查询 批量查询导出链接 批量查询百度V认证 批量查询百度安全 批量查询站长PC权重 批量查询爱站PC权重 批量查询搜狗总收录 站长资源大全 IIS7-cms大全 IIS7站群大全 IIS7虚拟空间大全 IIS7服务器大全 IIS7-VPS大全 服务器代购 站群专用 美国站群服务器 香港站群服务器 特供站群vps 亚洲服务器 菲律宾HS 韩国首尔 香港PCCW 香港沙田电信 香港PowerLine 日本多机房 新加坡多机房 韩国大带宽 香港新世界 香港Pangnet 台湾 美国服务器 加州RS 美国vps母鸡租用 洛杉矶MC 洛杉矶C3 特价促销区 洛杉矶NS 洛杉矶Cera高防 洛杉矶HS高防 SK高防 洛杉矶WX 加州RH 芝加哥AT VPS云主机 香港沙田电信 韩国首尔 香港Pangnet 新加坡SG 香港PL 洛杉矶SK 抗攻击 洛杉矶C3 日本大阪 洛杉矶Cera 抗攻击 洛杉矶MC 纽约 SSD 抗攻击 大容量备份VPS 国庆大促 俄罗斯