カテゴリ・トーク:Apache

提供:maruko2 Note.
移動: 案内, 検索
ウノウラボ 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

ログを記録しない

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

CustomLog logs/access.log combined env=0

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

CustomLog /dev/null combined

Mac OS X 10.4 の apache 1.3 で mod_gzip を使う

解凍し、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 install
make 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>

脚注

  1. mod_alias - Apache HTTP サーバ
  2. mod_setenvif - Apache HTTP サーバ

.htaccessを有効にする

<Directory /path/to/dir>
	AllowOverride All
</Directory>

<Directory> セクションでのみ使用可能
AllowOverride は正規表現無しの<Directory> セクションでのみ有効で、<Location> や <DirectoryMatch> や <Files> セクションでは無効です。

このディレクティブを None に設定すると、.htaccess ファイルは完全に 無視されます。 この場合、サーバはファイルシステムの .htaccess ファイルを読むことを 試みさえしません。

このディレクティブが All に設定されている時には、 .htaccess という コンテキスト を持つ 全てのディレクティブが利用できます。

LINEで送る このエントリーをはてなブックマークに追加
個人用ツール
名前空間
変種
表示
操作
案内
ツールボックス

注目のページ

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