【问题标题】:How to host multiple websites on different folders on a VPS?如何在 VPS 的不同文件夹中托管多个网站?
【发布时间】:2021-10-25 14:50:42
【问题描述】:

我有一个 domain1.com 指向我的 VPS 服务器(我刚刚在 A 条目中指定了 IP 地址)。更具体地说,domain1.com 指向我的 VPS 的文件夹 /var/www/html

我想在这个 VPS 上托管另一个网站,域名为:domain2.com

我的想法是新建一个目录:/var/www/html2,把新网站的代码放进去,然后把domain2.com重定向到这个文件夹。

但是,我不知道如何通过添加 A (DNS) 条目来执行此操作。另外,没有解决方案可以使用.htaccess 吗?

【问题讨论】:

    标签: .htaccess dns virtualhost vps


    【解决方案1】:

    听上去你可能已经为domain1.com 配置了主服务器配置。如果您只在服务器上托管 1 个站点,这是可以的,但如果您托管多个网站(不同的域),那么您需要配置 虚拟主机。一个用于domain1.com,另一个用于domain2.com,等等。

    您可能已将domain1.com 的必要指令(即ServerNameDocumentRoot 等)直接放在主服务器配置中,这些需要改为移动到<VirtualHost> 容器中。

    例如:

    <VirtualHost *:80>
        ServerName domain1.com
        ServerAlias www.domain1.com
        DocumentRoot /var/www/html
    
        <Directory /var/www/html>
            Require all granted
            # Enable .htaccess overrides if required
            AllowOverride All
        </Directory>
    </VirtualHost>
    
    <VirtualHost *:80>
        ServerName domain2.com
        ServerAlias www.domain2.com
        DocumentRoot /var/www/html2
    
        <Directory /var/www/html2>
            Require all granted
            # Enable .htaccess overrides if required
            AllowOverride All
        </Directory>
    </VirtualHost>
    

    为两个域添加相同的 A 记录。 (您可能也想对 www 子域做同样的事情,或者创建一个 CNAME 记录。)所以两个域都指向同一个 IP 地址(即您的服务器)。然后,Apache 可以通过将请求 (HTTP 1.1) 上的 Host 标头与 &lt;VirtualHost&gt; 容器内的 ServerName(或 ServerAlias)指令进行比较来确定将请求路由到哪个虚拟主机。

    通常将&lt;VirtualHost&gt; 容器放在单独的.conf 文件中,该文件包含稍后使用Include 指令在主服务器配置中。

    参考:


    更新:

    另外,有没有可以使用.htaccess 的解决方案?

    您不使用.htaccess 实现虚拟主机。使用.htaccess,您可以重写 URL,以便您可以模拟类似的东西(使用为多个域提供服务的单个虚拟主机),但这不是必需的,如果您托管完全独立的站点,则不应该这样做。

    【讨论】:

    • 您好,我现在试试您的解决方案,谢谢!
    • @ailauli69 请注意,您可能希望/需要将其他指令添加到每个 &lt;VirtualHost&gt;。例如,您可能希望为每个 vHost 等设置单独的错误和访问日志(参见 ErrorLogTransferLog 指令等)。如果您有 SSL 证书,则需要为端口 443(默认)配置额外的 &lt;VirtualHost&gt; 容器,而不是上面使用的端口 80 (HTTP)。等
    • 确实我得到一个内部内部服务器错误,我必须添加 VirtualHost 443 和 VirtualHost 80 吗?还是我必须更换它?
    • 将另外添加&lt;VirtualHost *:443&gt;。但是首先让端口 80 工作,实现 SSL/HTTPS 是另外一个步骤,而且对于它自己来说是一个巨大的话题。检查服务器错误日志中“内部服务器错误”的详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 2017-06-13
    • 2020-10-25
    • 2019-07-02
    相关资源
    最近更新 更多