Apache-2.2

使 Apache 伺服器只接受對域而不是 IP 的請求

  • November 17, 2021

我有一個執行 Apache 2.2.15 的 CentOS 伺服器。如果伺服器的 IP 地址是192.0.2.231並且我在瀏覽器中寫入,http://192.0.2.231/它會出現在我的網站上。

我想防止這種情況。我希望我的網站只能在 FQDN 上訪問,即http://example.com/

如何配置我的伺服器,以便在我訪問 IP 地址時無法訪問該網站?

您可以使用它Alias *來擷取虛擬主機中允許的任何其他流量,為此您必須在最後一個位置*使用具有別名的虛擬主機。

像這樣,只會提供定義的域。

<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/default
...
</VirtualHost>

<VirtualHost *:80>
ServerName another.example.com
DocumentRoot /var/www/another
...
</VirtualHost>

# /!\ THIS HAS TO BE ON THE LAST POSITION /!\
<VirtualHost *:80 *:443>
# [ Server Domain ]
ServerName localhost
ServerAlias *
# [ Cancel trafic ]
RewriteRule .* - [END,R=406]
# [ Custom Log ]
CustomLog ${APACHE_LOG_DIR}/other.log combined
</VirtualHost>

僅在我的範例中example.com並且another.example.com將被允許,所有其他域或 IP 將被取消流量。

要取消流量,您可以使用重定向到-然後添加錯誤程式碼,例如我使用 RewriteRule 重定向到406 Not Acceptable( R=406)。

在這裡您可以找到重定向程式碼列表: https ://en.wikipedia.org/wiki/List_of_HTTP_status_codes

引用自:https://serverfault.com/questions/742856