Apache2.4でのWebアクセス制御
とある事情で国内のみのアクセス制限することになり、下記のサイトからIPリストを取得
早速「.htaccess」で設定したら、サイトが落ちかけました。。。
「.htaccess」はアクセスがあるたびに設定内容を読み込むため、国内のIPリストを4000行書くと、サーバーが応答不能になるほど重くなります。
CentOS7標準の「firewall」で設定しようと思いましたが、検索エンジンを回避方法がわからず。。。
※ユーザーエージェントで回避するみたいですが、設定がよくわからなひ(汗
vhost.conf
<VirtualHost *:80> ServerAdmin webmaster@dummy-host.example.com DocumentRoot /example ServerName example.com <Directory "/example"> Options FollowSymLinks AllowOverride All Include /etc/httpd/conf.d/iplist </Directory> </VirtualHost>
バーチャルホストの設定を「/etc/httpd/conf.d/vhost.conf」に書いています。
「example」というフォルダが対象(サンプルなので各自の設定に書き換えてください。
4000行もipを書くため別ファイルに分けました。
iplist
SetEnvIf User-Agent "Googlebot" bok SetEnvIf User-Agent "Slurp" bok SetEnvIf User-Agent "msnbot" bok SetEnvIf User-Agent "bingbot" bok <RequireAny> Require all denied Require env bok Require ip 1.0.16.0/20 Require ip 1.0.64.0/18 Require ip 1.1.64.0/18 # #続きのipをここに記載 # </RequireAny>
設定エラーがでないか「configtest」で確認
service httpd configtest
Syntax OK
と表示されれば問題ないので、Apacheを再起動させます。
service httpd restart
サイトが落とせないのであれば、下記のコマンドで反映できます。
service httpd graceful