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

我有两个不同的域名,我想托pipe在同一个私人托pipe,我有。 我希望他们指向相同的IP地址,但有不同的内容(当然)。 我怎样才能做到这一点? 有没有不同的方法来做到这一点? 那么最好的办法是什么? 谢谢。

你可能会想使用Apache的虚拟主机。 在一个IP地址上托pipe多个域名是一种很好的支持方法。

http://httpd.apache.org/docs/2.2/vhosts/

具体而言,基于名称的虚拟主机: http : //httpd.apache.org/docs/2.2/vhosts/name-based.html

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

以下是两个域的示例configuration:

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

您将在这里find有关基于名称的虚拟主机支持的官方文档。

但是,请注意,这仅适用于纯HTTP连接,而不适用于HTTPS(基于SSL的HTTP):基于名称的虚拟主机依赖于知道正在请求的名称,但直到encryption的SSL连接build立。

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

所有浏览器都不支持SNI。 在撰写本文时,根据维基百科,这些文件可以:

  • Internet Explorer 7或更高版本,Windows Vista或更高版本(不适用于XP,甚至IE 8)
  • Mozilla Firefox 2.0或更高版本
  • Opera 8.0或更高版本(必须启用TLS 1.1协议)
  • Opera Mobile至less有Android版本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
  • MicroB在Maemo上

通过HTTPS托pipe多个基于名称的虚拟主机,需要启用mod_ssl并添加类似于上述示例的configuration:

 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证书,或者生成一些自动签名的证书,并configurationApache以将其用于SSL连接。