【问题标题】:How to set up Apache with 3 sites: Two name based virtual hosts and one via the IP address如何使用 3 个站点设置 Apache:两个基于名称的虚拟主机和一个通过 IP 地址
【发布时间】:2020-02-25 16:51:46
【问题描述】:

我已经有 2 个网站链接到域。

为此,我在/etc/apache2/sites-available/ 中有 2 个 conf 文件:

<domain1>.conf
<domain2>.conf

使用DocumentRoot /var/www/domain1DocumentRoot /var/www/domain2

另外,我需要设置第三个站点直接链接到服务器 IP。

为此,我创建了 conf 文件: IP.conf(IP为服务器IP):

<VirtualHost *:80>
    ServerAdmin <email>
    ServerName <IP>
    ServerAlias <IP>
    DocumentRoot /var/www/html/wordpress
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

运行:

sudo a2ensite <IP>.conf

还有:

restart apache service.

但这并没有帮助。

您能建议如何配置路由吗?

【问题讨论】:

  • 您的主要 Apache 配置中是否设置了 NameVirtualHost *:80?没有该名称的虚拟主机将无法工作。此外,您有ServerName &lt;IP&gt;ServerAlias &lt;IP&gt;,但应该是ServerName &lt;domain1&gt;ServerAlias &lt;domain2&gt;。如果您只是设置 IP 地址,它会将所有流量发送到第一个配置,它只会发送到该 IP 地址并忽略第二个配置。
  • 第一个配置是:&lt;VirtualHost *:80&gt; ServerAdmin &lt;email&gt; ServerName &lt;domain1&gt; ServerAlias &lt;domain1&gt; DocumentRoot /var/www/&lt;domain1&gt;/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined &lt;/VirtualHost&gt; 它可以工作。 Seconf 配置类似,但使用 ,它也可以工作。
  • 第三个配置的区别仅在于ServerNameServerAlias我还没有注册第三个域,所以我没有写什么。

标签: apache virtualhost


【解决方案1】:

问题是默认的 Apache 配置总是使用服务器的 IP 地址。这样IP.conf 将永远不会被加载。

您需要编辑默认 Apache 配置(位于 sites-available)以进行更改。

查看您的配置,您指定了 ServerNameServerAlias 的原始 IP 地址,这将有效地破坏设置基于名称的虚拟主机的目的:

<VirtualHost *:80>
    ServerAdmin <email>
    ServerName <IP>
    ServerAlias <IP>
    DocumentRoot /var/www/html/wordpress
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

在这种情况下会发生配置将被忽略,因为默认的 Apache 设置将始终遵循您所在机器的 IP 地址。哎呀,如果您的服务器有多个 IP 地址,它甚至会使用所有网络接口。

要使基于名称的虚拟主机正常工作,您必须在您的配置中使用域名/主机名。 domain1 是这样的:

<VirtualHost *:80>
    ServerAdmin <email>
    ServerName <domain1>
    ServerAlias <domain1>
    DocumentRoot /var/www/domain1
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

这是domain2

<VirtualHost *:80>
    ServerAdmin <email>
    ServerName <domain2>
    ServerAlias <domain2>
    DocumentRoot /var/www/domain2
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

现在对于 IP 地址主机配置,您应该进入 Apache 配置目录 — 在 Debian/Ubuntu 上为 /etc/apache2/ 或在 CentOS/RedHat 上为 /etc/httpd/ — 并查看 sites-available 目录。应该有一个名为000-default.conf的文件:

/etc/apache2/sites-available/000-default.conf

并在那里进行您在IP.conf 中显示的更改。在最基本的层面上,只需将DocumentRoot 更改为:

DocumentRoot /var/www/html/wordpress

然后重新启动 Apache,它应该可以正常工作了。

【讨论】:

    猜你喜欢
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 2012-07-28
    • 2014-01-06
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多