カテゴリ・トーク:Apache
- ウノウラボ Unoh Labs: mod_proxy_balancer 小技集
- mod_proxy_balancer 基本設定、ETag、アクセスログ(mod_rpaf)、SSL 関連、静的データはロードバランサで処理、など。
- Apacheの設定を変更し、単一IPアドレス上で複数のSSLサイトを運用する - builder by ZDNet Japan
- HTTPS サイトを名前ベースのバーチャルホストのように設定することができる。
- サーバの条件
- Apache 2.2.12 以降で、OpenSSL 0.9.8f 以降を用いてビルドされている必要がある。
- 対応ブラウザ
- Internet Explorer 7.0 以降(かつ Windows Vista 以降)
- Firefox 2.0 以降
- Safari 3.2.1 以降(かつ Mac OS X 10.5.6 以降)
- Opera 8.0 以降
- 条件がかなりきびしい。
目次 |
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
- IP アドレスの範囲を正規表現に変換。How do I exclude traffic from a range of IP addresses? - Analytics Help
ログを記録しない
リバースプロキシしたバーチャルホストなどで、ログを全く記録しないようにする設定。
CustomLog logs/access.log combined env=0
/dev/null に捨ててしまう方法もある。
CustomLog /dev/null combined
Mac OS X 10.4 の apache 1.3 で mod_gzip を使う
- Mac OS X 10.4.11
- Apache 1.3.41
- mod_gzip-1.3.26.1a.tgz
解凍し、Makefile を修正
- APXS?=/usr/local/sbin/apxs + APXS?=/usr/sbin/apxs - $(APXS) -Wc,-Wall,-O3,-fomit-frame-pointer,-pipe -c mod_gzip.c mod_gzip_debug.c mod_gzip_compress.c -o mod_gzip.so + $(APXS) -Wc "-Wall -O3 -fomit-frame-pointer -pipe" -c mod_gzip.c mod_gzip_debug.c mod_gzip_compress.c -o mod_gzip.so
ビルド&インストール。
# make # sudo make installmake install の内容 [表示する]
httpd.conf 追加設定
LoadModule gzip_module libexec/httpd/mod_gzip.so AddModule mod_gzip.c <IfModule mod_gzip.c> mod_gzip_on Yes mod_gzip_temp_dir /tmp mod_gzip_keep_workfiles No mod_gzip_minimum_file_size 500 mod_gzip_maximum_file_size 500000 mod_gzip_maximum_inmem_size 60000 mod_gzip_item_include mime ^text/html$ mod_gzip_item_include mime ^text/plain$ mod_gzip_item_include mime ^text/xml$ mod_gzip_item_include mime ^text/css$ mod_gzip_item_include mime ^text/javascript$ mod_gzip_item_include mime ^application/javascript$ mod_gzip_item_include mime ^application/x-javascript$ LogFormat "%h %l %u %t \"%V %r\" %<s %b mod_gzip: %{mod_gzip_result}n \ In:%{mod_gzip_input_size}n -< \ Out:%{mod_gzip_output_size}n = \ %{mod_gzip_compression_ratio}n pct." common_with_mod_gzip_info2 CustomLog logs/mod_gzip.log common_with_mod_gzip_info2 </IfModule>
脚注
.htaccessを有効にする
<Directory /path/to/dir> AllowOverride All </Directory>
<Directory> セクションでのみ使用可能
AllowOverride は正規表現無しの<Directory> セクションでのみ有効で、<Location> や <DirectoryMatch> や <Files> セクションでは無効です。このディレクティブを None に設定すると、.htaccess ファイルは完全に 無視されます。 この場合、サーバはファイルシステムの .htaccess ファイルを読むことを 試みさえしません。
このディレクティブが All に設定されている時には、 .htaccess という コンテキスト を持つ 全てのディレクティブが利用できます。