Apache URL転送
Apache WebサーバはURL転送を行うディレクティブを元々もっており、この設定を行う事で簡単に転送設定が行うことができます。
①DocumentRootに設定したURLを他のサイトへ転送する方法
転送設定を行うにはhttpd.confを編集します。
ServerName www.hogehoge.net
DocumentRoot “/var/httpd/docroot”
<Directory />
Redirect / http://www.gohome.net/
</Directory>
これにより、www.hogehoge.netにアクセスすると、www.gohome.netに飛びます。
②仮想ホストを任意のサイトへ転送する方法
<VirtualHost 210.xxx.xxx.150>
ServerName www.oppeke-pe.net
Redirect / http://www.example.net/
</VirtualHost>
バーチャルホストwww.oppeke-pe.netにアクセスすると、www.example.netに転送されます。
③特定のページから任意のページへ転送する例
例1)
Redirect /index-2.html http://www.example.net/
※index-2.htmlのアクセスをwww.example.netへ転送。
Apache CGIのスクリプトエイアリアス
ユーザディレクトリ配下に作成したCGIディレクトリをCGIエイリアスにしたい場合、例えばユーザ毎のCGIディレクトリを指定し「http://www.xxxxxx.org/~user/cgi-bin/のようにする場合、次のように設定します。
httpd.confを開き以下の箇所を編集。
①/home配下にCGIエイリアスを作成
ScriptAliasMatch ^/~(^/]*/cgi-bin/(.*)
“/home/$1/public_html/cgi-bin/$2″
この設定により、”/home”配下にユーザディレクトリが存在する際、全てのユーザにCGIエイリアスパスが設定されます。
②ユーザ単位でCGIエイリアスを作成
ScriptAlias /~user/cgi-bin/ /home/user/public_html/cgi-bin/
上記いずれの方法も、次のエントリは必ず記述します。
<Directory “/home/*public_html/cgi-bin/*>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
Apache KeepAliveについて
Apacheの過負荷を軽減するためのサーバチューニングのひとつにKeepAliveありますが、この設定に対しては誤解して理解しているケースが多いようです。
Keepalive系の設定としては以下のパラメータ(ディレクティブ)があります。
- KeepAlive On|Off
KeepAliveは、1回の転送でコネクションの切断をする不効率な事を防ぐた仕組みであることは、体外の人は理解できていると思いますが、この設定はひとつのページを構成するWEBファイルを想像して考えるとわかりやすいと思います。
WEBページにはHTMLの記述、画像、FLASH等いくつかの送信しなければならないファイルが一つのWEBページを形成しているケースがほとんどです。このファイルをHTTP/1.0の時代の方式で送信すると、ファイルを送るごとに通信の切断が生じていました。しかしHTTP/1.1から KeepAliveの仕様が登場し、ApacheのパラメータでON/OFFができるようになりました。これにより一回のコネクションを維持し続け、そのコネクション上で複数回のファイル転送が行えるようになりました。
多数の接続がある場合はkeepaliveをOFFにするべきだという神話がありますが本当にそうでしょうか?これはコンテンツの作り方、PCではなくて携帯、あるいは多数ってどの程度?というのが肝であることはおわかり頂けるでしょか?
回線の帯域とサーバの処理能力、ルータや、FireWallの処理能力などが絡み一言でこれが過負荷の場合のセオリーだというのはありません。若干ここはパラメータ値を制御して試行の経過を観察して適正値を探るのがベストでしょう。
- MaxKeepAliveRequests number
この設定は、一回の接続コネクション上で転送できるファイルの最大回数を指定します。もし、自社サーバを専用ホスティング、もしくは自前サーバで運用するなら、コンテンツの一ページあたりの平均転送ファイル数がわかっているならそれを割り出してこの値を決定すると良いでしょう。
考え方は、様々だと思いますが、1コンテンツの最大転送ファイル数に少し多いくらいで設定する方法、単純に平均値で設定する方法、根本的にブラウザの標準セッション数:4で設定する考え方もあり、どれもケースバイケースで正しいと思います。後、考慮しなければいけないのは、ファイルのサイズが大きすぎて転送に時間がかかるコンテンツをどう考えるかです。
keepalive offでは、一度に画面を表示することにはなりませんが、少しづつ転送が終わる毎にゆっくり表示していくのでも問題ないコンテンツであれば多数の瞬間的なアクセスをさばくためにこの設定を少なめにするのは、悪い事ではなさそうです。
- KeepAliveTimeout seconds
keepaliveが有効になっている場合、最後の通信が終了してから、無通信状態が、この設定で指定した秒数経過した場合セッションを切断する設定となります。この値はあまり長くしてしまうと瞬間的にさばける接続数は少なくなってしまいますので、7~15秒くらいで設定するのが妥当なような気がします。
