【问题标题】:How do I mix ip and name based virtualhosts on the same server?如何在同一台服务器上混合使用基于 IP 和名称的虚拟主机?
【发布时间】:2013-09-07 04:20:21
【问题描述】:

我目前在我的服务器上有一个生产站点,我正在寻找一个开发站点。生产站点正在使用我对单个域 SSL 证书的唯一 IP 地址。有没有办法可以在不购买另一个 IP 的情况下添加开发站点。开发站点不一定需要 SSL。也许是基于 IP 和名称的虚拟主机的混合?目前的设置如下:

# Production
NameVirtualHost 123.45.678.910:80

<VirtualHost 123.45.678.910:80>
  DocumentRoot /var/www/html/production
  ServerName www.example.com
</VirtualHost>

NameVirtualHost 123.45.678.910:443

<VirtualHost 123.45.678.910:443>
  DocumentRoot /var/www/html/production
  ServerName www.example.com
</VirtualHost>

谢谢 保罗

编辑

这样的东西有用吗?

# Production
NameVirtualHost 123.45.678.910:80

<VirtualHost 123.45.678.910:80>
  DocumentRoot /var/www/html/production
  ServerName www.example.com
</VirtualHost>

NameVirtualHost 123.45.678.910:443

<VirtualHost 123.45.678.910:443>
  DocumentRoot /var/www/html/production
  ServerName www.example.com
</VirtualHost>

# Development

<VirtualHost 123.45.678.910:80>
  DocumentRoot /var/www/html/development
  ServerName dev.example.com
</VirtualHost>

或者我需要使用不同的端口,也许是 8080?

【问题讨论】:

  • 你是说最后一个例子中的:443吗?

标签: linux apache ssl virtualhost centos6


【解决方案1】:

你可以:

【讨论】:

  • 感谢您的回答。如果我选择选项 1 并为开发站点使用不同的端口号,我是否可以为生产站点使用扩展验证证书?如果是这样,虚拟主机配置看起来如何?我还需要生产站点适用于所有浏览器。再次感谢。
  • 你应该可以。选项 1 肯定是最简单的,只要确保 VirtualHost 部分在正确的端口中分开,您可能还需要在正确的端口上启用 Listen xxxxx
【解决方案2】:

这在 Apache 文档中有所涉及,但“基本上”您不能通过 SSL 执行基于名称的虚拟主机;证书交换必须在主机标头发送之前发生,到那时为时已晚。不过,您可以在备用端口上创建虚拟 SSL 站点。

否则,您当然可以在非 SSL 端口上创建基于名称的虚拟主机。首先在生成的配置文件中定义您当前的生产站点以避免出现问题。这就像只在端口 80 上使用基于名称的虚拟主机,在 443 上再使用一个虚拟主机。

【讨论】:

  • 感谢您的快速回答。我更新了我的帖子。上面的配置能行吗?
  • 您实际上可以使用对多个主机有效的证书或使用 SNI:wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI
  • 我假装 SubjectAltName 属性不存在,因为这在技术上是跨站点共享相同的证书。但是 SNI 对我来说确实是新的。万岁学习的东西!
猜你喜欢
  • 2012-01-22
  • 2014-08-07
  • 2013-12-13
  • 1970-01-01
  • 2014-09-23
  • 2018-05-04
  • 2013-05-08
  • 2011-03-17
  • 1970-01-01
相关资源
最近更新 更多