Ubuntu
使用 apache2 製作只能訪問域名的 Web 伺服器
我有一個域名
example.com
和一個帶有靜態 IP 地址的 VPS123.123.123.123
。我希望瀏覽器提供域名來訪問網站內容。
在實踐中,我希望人們只有在他們放置
exemple.com
而不是123.123.123.123
在瀏覽器的 url 欄上時才能看到我的網站。所以在我的
/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
實際上,如果我在瀏覽器的 url 欄中放置123.123.123.123
和放置,伺服器會為我提供兩者的內容。exemple.com
為什麼?
Apache 會將流量定向到它在配置中看到的第一個匹配項。
VirtualHost
因為定義的第一個沒有定義ServerName
orServerAlias
,所以它被配置為擷取到任何綁定主機名或埠 80 上任何綁定 IP 地址的任何流量。
您忘記命名專用於 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。