如何将2个不同的域指向1个IP地址(Apache)?


11

我有两个不同的域名,我想在同一个私有主机上托管。我希望他们指向相同的IP地址,但具有不同的内容(当然)。我怎样才能做到这一点?有不同的方法可以做到这一点吗?在那种情况下,最好的方法是什么。谢谢。

Answers:



14

Apache2支持根据域名提供不同的内容,即使所有这些域名都解析为相同的IP地址。每个域名都由一个虚拟主机处理,因此基于名称的虚拟主机

这是两个域的示例配置:

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName www.yourfirstdomain.tld
  DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>

<VirtualHost *:80>
  ServerName www.yourseconddomain.tld
  DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>

您可以在此处找到有关基于名称的虚拟主机支持的官方文档。

但是,请注意,这仅适用于纯HTTP连接,不适用于HTTPS(基于SSL的HTTP):基于名称的虚拟主机依赖于知道所请求的名称,但是只有在加密的SSL之前,Apache才能知道此信息。建立连接。

如果您还需要使用HTTPS进行安装,则需要依赖SSL协议的扩展,即服务器名称指示(SNI)(RFC4366)。基本上,启用SNI的客户端(例如:Web浏览器)在建立加密的SSL连接时会添加额外的纯文本信息,从而允许服务器在SSL连接就绪之前就知道所请求的名称。

所有浏览器尚不支持SNI。在撰写本文时,根据Wikipedia所述,这些工具可以:

  • Windows Vista或更高版本上的Internet Explorer 7或更高版本(在XP甚至IE 8上均不起作用)
  • Mozilla Firefox 2.0或更高版本
  • Opera 8.0或更高版本(必须启用TLS 1.1协议)
  • Android上的Opera Mobile至少为10.1 Beta版
  • Google Chrome浏览器(Vista或更高版本,Chrome 6或更高版本的XP,Chrome 5.0.342.1或更高版本的OS X 10.5.7或更高版本)
  • Safari 2.1或更高版本(Mac OS X 10.5.6或更高版本以及Windows Vista或更高版本)
  • Konqueror / KDE 4.7或更高版本
  • Apple iOS 4.0或更高版本中的MobileSafari
  • Honeycomb(v3.x)或更高版本上的Android默认浏览器
  • Windows Phone 7
  • Maemo上的MicroB

通过HTTPS托管多个可通过HTTPS访问的基于名称的虚拟主机,需要启用mod_ssl并添加与上述示例类似的配置:

Listen 443      
NameVirtualHost *:443

# Accept connections for these vhosts from non-SNI clients
# Clients without SNI will be handled by the first defined vhost.
# If you only want SNI-enabled client, put on instead
SSLStrictSNIVHostCheck off

<VirtualHost *:443>
  ServerName www.yourfirstdomain.tld
  DocumentRoot /www/yourfirstdomain.tld/    
</VirtualHost>

<VirtualHost *:443>
  ServerName www.yourseconddomain.tld
  DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>

请记住,使用SSL需要您为域购买SSL证书-或生成一些自动签名的证书,并配置Apache以将其用于SSL连接。


您能告诉apache2配置文件的名称和路径吗?
若奥·皮门特尔·费雷拉

不要忘了更改后重新启动Apachesudo service apache2 restart
若昂·皮门特尔·费雷拉
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.