我有两个不同的域名,我想托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。 在撰写本文时,根据维基百科,这些文件可以:
通过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连接。