Nim*_*ima 12 vps domain apache-2.2
我有两个不同的域名,我想将它们托管在我拥有的同一个私人主机上。我希望它们指向相同的 IP 地址,但具有不同的内容(当然)。我怎样才能做到这一点?有没有不同的方法来做到这一点?在这种情况下,最好的方法是什么。谢谢。
p_p*_*r3k 15
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>
Run Code Online (Sandbox Code Playgroud)
但是,请注意这仅适用于普通的 HTTP 连接,不适用于 HTTPS(基于 SSL 的 HTTP):基于名称的虚拟主机依赖于知道请求的名称,但是在加密 SSL 之前,Apache 无法知道此信息连接建立。
如果您的设置也需要使用 HTTPS,则需要依赖 SSL 协议的扩展,称为服务器名称指示(SNI)(RFC4366 )。基本上,启用 SNI 的客户端(例如:Web 浏览器)在建立加密的 SSL 连接时添加额外的纯文本信息,允许服务器在 SSL 连接准备好之前知道请求的名称。
所有浏览器尚不支持 SNI。在撰写本文时,根据维基百科,这些是这样做的:
托管多个可通过 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>
Run Code Online (Sandbox Code Playgroud)
请记住,使用 SSL 要求您为您的域购买 SSL 证书 - 或者生成一些自动签名的证书,并将 Apache 配置为将它们用于 SSL 连接。
您可能想要使用 Apache 的虚拟主机。这是一种在单个 IP 地址上托管多个域的受支持的方法。
http://httpd.apache.org/docs/2.2/vhosts/
具体来说,基于名称的虚拟主机:http : //httpd.apache.org/docs/2.2/vhosts/name-based.html
归档时间: |
|
查看次数: |
45504 次 |
最近记录: |