Apache

提供:maruko2 Note.
移動: 案内, 検索

目次

Apache カテゴリのページ

Apache HTTP Server Project

The Apache HTTP Server Project

Apache HTTP Server ドキュメント

Alias ディレクテブの注意点

Alias を DocumentRoot ディレクトリの外側に配置した場合は、行き先のディレクトリに対するアクセス権限を明示的に制限しなければならない。[1]

Alias する実際のディレクトリが DocumentRoot の外側に配置されている場合、

DocumentRoot /var/www/html
Alias /foo /home/user/foo

Alias する実際のディレクトリに対するアクセス権を明示的に宣言する必要があるので、下記のような追加設定が必要になる。

<Directory /home/user/foo>
  Order allow,deny
  Allow from all
</Directory>

特定の IP アドレスからのアクセスがあった場合、別のページを表示する

192.168.0.1 と 192.168.1.1 からのアクセスを /index2.html にリダイレクトする。

RewriteEngine on
RewriteCond %{REMOTE_ADDR} ^192\.168\.0\.1$ [OR]
RewriteCond %{REMOTE_ADDR} ^192\.168\.1\.1$
RewriteCond %{REQUEST_URI} !/index2.html
RewriteRule ^/.*$ /index2.html

192.168.0.1 と 192.168.1.1 以外からのアクセスを /index2.html にリダイレクトする。

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.1$
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.1$
RewriteCond %{REQUEST_URI} !/index2.html
RewriteRule ^/.*$ /index2.html

メンテナンスをおこなう場合に、特定の IP アドレスからは通常どおり表示させるようにし、特定の IP アドレス以外からはメンテナンスページを表示させるようにすることができる。

また、mod_rewrite と Alias を組み合わせて、メンテナンス時のみアクセスできるページを設置するようなこともできる。

特定のアクセスをログに記録しない

SetEnvIf で、特定のアドレスを環境変数[2]として設定する。

SetEnvIf Remote_Addr 1.2.3.4 no-log
SetEnvIf Remote_Addr 192.168.1 no-log
CustomLog logs/access_log common env=!no-log

IP アドレスの範囲を CIDR 形式で指定すると動作しないので、正規表現で指定する必要がある。

#CIDR 形式で指定すると動作しない
SetEnvIf Remote_Addr 192.168.1.64/26 no-log
#正規表現で指定
SetEnvIf Remote_Addr ^192\.168\.1\.(6[5-9]|[7-9][0-9]|1([0-1][0-9]|2[0-6]))$ no-log

ログを記録しない

リバースプロキシしたバーチャルホストなどで、ログを全く記録しないようにする設定。

CustomLog logs/access.log combined env=0

/dev/null に捨ててしまう方法もある。

CustomLog /dev/null combined

脚注

  1. mod_alias - Apache HTTP サーバ
  2. mod_setenvif - Apache HTTP サーバ
このエントリーをはてなブックマークに追加
個人用ツール
名前空間
変種
表示
操作
案内
ツールボックス

注目のページ

このサイトのはてなブックマーク数