CentOSサーバーでApache 2.2.15を実行しています。サーバーのIPアドレスが198.51.100.4であり、ブラウザーhttp://198.51.100.4に書き込んだ場合、それは私のWebサイトに表示されます。
これを防ぎたい。WebサイトにFQDN(http://example.com/など)でのみアクセスできるようにしたい。
IPアドレスにアクセスしたときにWebサイトにアクセスできないようにサーバーを構成するにはどうすればよいですか?
CentOSサーバーでApache 2.2.15を実行しています。サーバーのIPアドレスが198.51.100.4であり、ブラウザーhttp://198.51.100.4に書き込んだ場合、それは私のWebサイトに表示されます。
これを防ぎたい。WebサイトにFQDN(http://example.com/など)でのみアクセスできるようにしたい。
IPアドレスにアクセスしたときにWebサイトにアクセスできないようにサーバーを構成するにはどうすればよいですか?
回答:
を使用Alias *
して、仮想ホストで許可されているトラフィック以外のトラフィックをキャッチできます。これには、仮想ホストをエイリアスとして最後の位置で使用する必要があります*
。
そのように定義されたドメインのみが提供されます。
<VirtualHost *:80>
ServerName mywebsite.com
DocumentRoot /var/www/default
...
</VirtualHost>
<VirtualHost *:80>
ServerName another.mywebsite.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>
私の例では、mywebsite.comとanother.mywebsite.comのみが許可され、他のすべてのドメインまたはIPでトラフィックがキャンセルされます。
トラフィックをキャンセルするには、リダイレクトを使用してから-
エラーコードを追加します。たとえば、RewriteRuleを使用して406 Not Acceptable(R=406
)にリダイレクトします。
ここにリダイレクトコードのリストがあります:https : //fr.wikipedia.org/wiki/Liste_des_codes_HTTP
「拒否された」エラーなどが発生するだけのデフォルトの仮想ホストを追加できます。その後、ブラウザが他の仮想ホストのいずれServerName
かまたはServerAlias
行と一致するURLのホストなしでWebサーバーにアクセスすると、デフォルトの仮想ホストがサービスを提供します。
だからあなたのApache設定では:
<VirtualHost *:80>
ServerName default
DocumentRoot /var/www/default
...
</VirtualHost>
<VirtualHost *:80>
ServerName mywebsite.com
...
</VirtualHost>
次のような書き換えルールが必要です。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^mywebsite.com$
RewriteRule /.* https://mywebsite.com/ [R]