在一个 IP 上运行 Apache 的问题

在一个 IP 上运行 Apache 的问题

我目前有一台具有多个 IP 的机器,但我希望将 Apache 限制在其中一个 IP 上。

我知道这个问题已经在这里被问过了,但是我遇到了以下问题:将 Apache 限制为单个 IP

为了简单起见,假设我有一个 IP 1.1.1.1,我希望 Apache 在其上运行,同时另一个 IP 2.2.2.2 可供 Apache 使用,但是我不希望 Apache 触碰这个 IP。

在我的 ports.conf 中:

Listen 1.1.1.1:80

<IfModule ssl_module>
    Listen 1.1.1.1:443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 1.1.1.1:443
</IfModule>

同时,000-default.conf:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

使用该配置,启动时没有错误,但是在浏览器中访问 1.1.1.1 时,它似乎没有带我到 /var/www/html(默认的 Apache2 页面),而是带我到当前在该 IP 上运行的我的一个站点。

此外,使用:

<VirtualHost 1.1.1.1:80>

似乎允许您在浏览器中访问 1.1.1.1 并获取 /var/www/html(默认 Apache2 页面),但在启动时使用此配置会出现错误:

[Tue Aug 18 17:34:54.487039 2015] [core:error] [pid 5446] (EAI 2)Name or service not known: AH00549: Failed to resolve server name for 1.1.1.1 (check DNS) -- or specify an explicit ServerName

我被这个问题难住了,如果有人能告诉我出了什么问题,那就太好了。

答案1

...或者指定明确的 ServerName- 重点来了。您的配置中一定缺少了它ServerName your.fqdn。Ubuntu 的 httpd 默认没有它。

选择<VirtualHost *:80>版本。创建/etc/apache2/conf-available/服务器名称.conf,放在ServerName your.fqdn那里,运行a2enconf servername,然后service apache2 reload。记得还要设置服务器名称在每个虚拟主机块(默认的可以被跳过)。

除此之外,您的 IP 配置似乎没有问题。确保000-默认.conf已启用(链接存在于/etc/apache2/sites-enabled)。

相关内容