我有一个域名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.123
和exemple.com
放在浏览器的网址栏中,服务器会向我提供内容。为什么?
答案1
Apache 将把流量引导至第一的VirtualHost
与配置中看到的相匹配。因为定义的第一个没有定义ServerName
或ServerAlias
,所以它被配置为捕获端口 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。