使用 apache2 使域名只能访问 Web 服务器

使用 apache2 使域名只能访问 Web 服务器

我有一个域名example.com和一个带有静态IP地址的VPS 123.123.123.123
我希望浏览器提供域名来访问网站内容。

实际上,我希望人们仅在将exemple.com而不是放在123.123.123.123浏览器的网址栏上时才能看到我的网站。

所以在我的/var/www/目录中我创建了两个子目录。
/var/www/default(对于不提供 dn 的人将看到的内容)以及
/var/www/exemple实际的网站内容。
/etc/apache2/sites-enabled/000-default.conf像这样编辑了我的文件。

<VirtualHost *:80>
    DocumentRoot /var/www/default
</VirtualHost>

<VirtualHost *:80>
    ServerName example.com
    ServerAlias example.com

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/exemple

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

在我看来这应该有效。实际上/var/www/default,如果我将123.123.123.123exemple.com放在浏览器的网址栏中,服务器会向我提供内容。为什么?

答案1

Apache 将把流量引导至第一的VirtualHost与配置中看到的相匹配。因为定义的第一个没有定义ServerNameServerAlias,所以它被配置为捕获端口 80 上任何绑定主机名或任何绑定 IP 地址的任何流量。

答案2

您忘记命名专用于 example.com 的 VirtualHost。以下是我的修改(以及一些补充建议):

<VirtualHost *:80>
    DocumentRoot /var/www/default
</VirtualHost>

<VirtualHost 123.123.123.123:80>                              # <= Should fix your issue
    ServerName example.com
    ServerAlias www.example.com                               # <= Suggested modification

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/exemple

    ErrorLog ${APACHE_LOG_DIR}/error-example.log              # <= Suggested modification
    CustomLog ${APACHE_LOG_DIR}/access-example.log combined   # <= Suggested modification
</VirtualHost>

当然,不要忘记重新加载Apache。

相关内容