カテゴリー「WEBサーバ 【人気】」の8件の記事

January 06, 2007

WEBサイトの閉じ方について考える

WEBサイトの作り方について述べられた文献は多いですが、WEBサイトの閉じ方について述べられた文献は滅多に見ません。そこで今回は私が考えるWEBサイトの閉じ方について考えてみたいと思います。

【WEBサイト閉鎖までに行うこと】
流れとしてはこんな感じになるでしょう。

1.まず最初に「WEBサイトを○月○日に閉鎖します」というアナウンスを出す。
2.閉鎖日になったら「このサイトは○月○日に閉鎖しました」というアナウンスに切り替える。(WEBサーバごと切り替えるのが良し)
3.サービスに使っていたサーバを適切に処理する。
4.その後閉鎖告知ページを残すのであれば、そのページが残るように適切に処理する。

WEBサイト閉鎖はネガティブな作業であるためあまり気合が入らないかもしれませんが、最後まできちんと気を抜かずにがんばりましょう。

【閉鎖告知用サーバでよくあること】
・COPYRIGHT表記が古いまま
  →「Copyright (C) 1998 ○○」という表記を残す必要があるならきちんと毎年更新しましょう。

・WEBサーバにセキュリティパッチが適用されていない。
  →管理者不在になるためか、セキュリティパッチが適用されていない例が多いです。こういったサーバが踏み台にされやすいです。

・リンク切れ多発。
  →リンク先が更新された場合、きちんとリンクを変えましょう。

などなど、お粗末なことが多いです。閉鎖告知用サーバを持つのであればサービス用サーバ同様きちんと管理しましょう。

【おすすめ】
・閉鎖告知用サーバにもきちんと管理者を置く。

・もしくは多少費用がかかっても閉鎖告知用サーバはホスティング業者に管理を委託するのもあり(かなりお勧め)。

・サービスを閉鎖した場合データやプログラムのバックアップをサーバや社内に残しているところも多いが、放置された情報が一番流出の危険性が高いので、それらをCDRなどに焼いて銀行の貸し金庫に保管すると安全。

・閉鎖告知をやめる際のドメイン名処理に注意。ドメイン名を持ち続けるかもしくは信頼できる他社に売るというのがお勧め。何もしないとドメイン名転売業者が手に入れる可能性大。

などがあります。

| | Comments (3) | TrackBack (0)

November 12, 2004

HTTP圧縮を実現するアプライアンスサーバ

サーバ設定変更でHTTP圧縮を実現するのは結構大変です。Apacheであればmod_gzipインストール、IISであればIISの圧縮機能設定やISAPI追加等の必要があります。これらの設定は概してとても面倒で、HTTP圧縮の威力はよくわかるものの、システム管理者としては極力楽にそれを実現したいと思うわけです。そこで今回はHTTP圧縮を実現するアプライアンスサーバをいくつかご紹介しましょう。

【HTTP圧縮アプライアンスサーバの仕組み】
通常のネットワーク構成ではロードバランサーの下にWEBサーバをぶら下げる構成を取ります。HTTP圧縮アプライアンスサーバを導入する場合は、WEBサーバからの戻りパケットがアプライアンスサーバを通るように構成します。すなわち戻りパケットをWEBサーバから受け取り、アプライアンスサーバがデータを圧縮してクライアントに返すわけです。とってもお手軽です。

【販売しているHTTP圧縮アプライアンスサーバ】
現在販売されているものを簡単に調べてみました。ハードウェアタイプのものとソフトウェアタイプのものがあります。

http://www.macnica.net/redline/
http://www.takachiho-kk.co.jp/products/networking/prod/netscaler/
http://www.ashisuto.co.jp/prod/detail.php?A=83
http://www.ashisuto.co.jp/prod/quix/web/gaiyo01.php
http://www.zend.co.jp/products/zps/

■参考
http://nosa.cocolog-nifty.com/sanonosa/2004/09/http.html

| | Comments (0) | TrackBack (0)

November 05, 2004

HTTPヘッダー研究その4: IISのHTTPヘッダーを書き換えよう

IISのHTTPヘッダーを書き換える方法は、apacheのそれと比べて情報源がかなり限定されていて調べるのに大変苦労しました。それだけにここでその方法を書いてしまうのはちょっと惜しい気持ちもあるのですが、まあ隠しても仕方ないので書いてしまいます。(この書き込みが役に立たれたら是非コメント欄に書き込んでください・・・)

基本的にIISでHTTPレスポンスヘッダーを書き換えるためにはISAPIフィルタリングアプリケーションをIISに登録する必要があります。

【HTTPヘッダーを自由自在に書き換える方法】
HTTPヘッダーを自由自在に書き換えられる無料のISAPIアプリは残念ながらみつかりませんでした。しかし有料ではservermaskという強力なものがあります。

servermaskは不要なHTTPヘッダーを消したり書き換えたりする機能の他に、HTTPヘッダー的に他のWEBサーバに化けるという機能もあります。HTTPヘッダーいじりが本当に自由自在にできるので便利です。価格は1サーバライセンス99.95ドル。サーバ台数が少ないサイトでは有効ではないでしょうか。(うちはサーバ台数が多すぎて無理です・・・)


【HTTPヘッダーの製品情報を隠蔽する】
製品情報の隠蔽、すなわちServerName部分だけ隠蔽するだけだったら無料のISAPIが2つ存在します。

1つめはマイクロソフト社が提供するURLSCANツールを入れる方法です。

まずはインストールしましょう。次に設定ファイルを変更します。設定ファイル

c:\WINNT\system32\inetsrv\urlscan\urlscan.ini

の中で「RemoveServerHeader=1」として、urlscan.exeを実行し、IISを再起動することで適用されます。ただしURLSCANツールはHTTPヘッダーの書き換えのためにあるというよりは不正アクセスの防御のために作られたツールです。適用の前にはURLSCANの仕組みをよく理解しておくことが必要です。特に[AllowExtensions]に.aspを追加し、[DenyExtensions]で.aspを削除しておかないとASP言語の実行がされなくなります。使い方を間違えるととても危険なツールです。


もう1つはMoIISProtectをISAPIに追加する方法です。

MOIISProtectをISAPIフィルタに登録するだけでIIS製品情報が非表示になります。これは簡単で便利です。
MOIISProtect.gif


【HTTPヘッダーのETag情報を隠蔽する】
最後にETag情報だけを隠蔽するためのETagFixというISAPIアプリを紹介します。これは試してないですが、多分予想通りの働きをしてくれるものと思われます。無料だそうです。

| | Comments (0) | TrackBack (2)

October 28, 2004

HTTPヘッダー研究その3: キャッシュコントロール

ロゴや.cssのように滅多に更新されないデータがあったとします。サイトにアクセスする度にWEBブラウザーがこういったデータを毎回読み込むようになっているとネットワーク帯域の無駄遣いですし、レスポンスも遅くなります。そこで今回はHTTPレスポンスヘッダーを書き換えてそれらのデータをWEBブラウザーのキャッシュに残るようにする方法を記してみたいと思います。

 

【基礎知識編】 キャッシュコントロールを考える際、知っておくべきHTTPレスポンスヘッダーは4つ。Cache-Control、Pragma、Expires、及びETagである。細かい話しは省略するので次のサイトを見ておいてください。

 

事例に学ぶWebシステム開発のワンポイント(12)

 

今回はETagは無条件削除、Cache-ControlだけコントロールするとしてPragmaとExpiresは対象外とします。

 

 

【Apacheでの設定編】 apacheの場合いろいろなやり方があるようですが、ここではmod_expiresを追加する方法をご紹介します。

 

まずmod_expiresを追加してコンパイルします。
./configure --enable-module=expires
make; make install

 

そして以下のような要領でhttpd.confを書き換えます。


<Directory />
Options None
AllowOverride None
ExpiresActive On ExpiresByType text/html "access plus 1 hours" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/jpg "access plus 1 month" ExpiresByType text/css "access plus 1 days" ExpiresByType application/x-javascript "access plus 1 days" </Directory>


 

 

【Tux Web Serverでの設定編】 ①/proc/sys/net/Tux Web Server/generate_cache_controlが"1"になっていなければ"1"にします。ただしデフォルトが"1"なので特に書き換える必要はないかも。
②/etc/Tux Web Server.mime.typesを次の要領で書き換えます。


text/html html|3600 htm|3600 image/gif gif|86400 image/jpeg jpeg jpg|86400 jpe


③/etc/init.d/Tux Web Server restart

 

 

【IISでの設定編】 IISの場合は拡張子別でのHTTPヘッダーコントロールができず、フォルダ単位になります。IISの場合はGUIベースなので簡単です。
HTTP_compress_IIS.gif

 

 

【やってみた結果】 HTTPレスポンスヘッダーを見て次のようになっていたら成功です。
Date: Thu, 28 Oct 2004 09:31:06 GMT
Content-Type: text/html
Cache-Control: max-age=3600

 

さて効果はどうか。実際のデータを多少改変したのが以下の図です。日曜日と月曜日の間に設定変更をしましたが、リクエスト、レスポンス共激減したようですね。
cache_hit.gif

| | Comments (1) | TrackBack (0)

October 22, 2004

HTTPヘッダー研究その2: 不要なHTTPレスポンスヘッダーは消しましょう

HTTPレスポンスヘッダーって無駄が多いですよね。何を持って無駄かというのも議論が分かれるところですが、大規模サイトになると1行の無駄でも数万~数百万アクセスという量になってかなり大きな無駄が発生してしまいます。これは当然ネットワーク費用にも跳ね返ってくるのでもったいない話しです。そこで今日はapacheのHTTPレスポンスヘッダーの削除方法を記して見ます。

 

【設定方法】 apacheの場合、いくつかのHTTPレスポンスヘッダーはhttpd.confの編集で操作できますが(例: ETagの場合は「FileETag none」とか)、それ以外のものになると基本的にはC言語で書かれているソースの該当個所を削除することになります。え、危険ではないかって?それがオープンソース(すなわち自己責任)というものなのでリスクは積極的に受け入れましょう。

 

ではまずは何を消すかを考えてみましょう。
---------------------------------------------------
% telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HEAD / HTTP/1.0

 

HTTP/1.1 200 OK

 

Date: Mon, 18 Oct 2004 11:23:39 GMT
Server: Apache/1.3.31 (Unix)
Last-Modified: Fri, 10 Oct 2003 11:39:51 GMT ETag: "b7d74-64-3f869a87" Accept-Ranges: bytes Content-Length: 100
Connection: close
Content-Type: text/html
---------------------------------------------------
賛否両論あるかと思いますが、一旦上記赤字の部分としてみたいと思います。ということで以下の要領で該当部分をコメントアウトしてコンパイルしてみましょう。

 

src/main/http_core.c

 

/*
ap_set_last_modified(r);
ap_set_etag(r);
ap_table_setn(r->headers_out, "Accept-Ranges", "bytes");
*/

 

そしてapacheを再度起動してHTTPレスポンスヘッダーを出して見ると・・・
---------------------------------------------------
HTTP/1.1 200 OK
Date: Mon, 18 Oct 2004 11:23:39 GMT
Server: Apache/1.3.31 (Unix)
Content-Length: 100
Connection: close
Content-Type: text/html
---------------------------------------------------

 

成功です。

 

| | Comments (4) | TrackBack (0)

October 21, 2004

404エラー用ページを用意しよう(apache編)

apacheをなにも考えずにインストールすると、404エラーがこんな感じになります。


Not Found

The requested URL /a was not found on this server.


Apache/1.3.31 Server at hogehoge.nifty.com Port 80


これはむちゃくちゃかっこ悪いですしapacheのバージョンもバレバレなので、多少でも加工してみることにしましょう。


【設定方法】
httpd.confファイルに下記の行を追加するだけです。①だとメッセージがそのまま送信されます。②だと指定のURLにリダイレクトします。

①ErrorDocument 404 "<h1>404 error. File Not Found</h1>"
②ErrorDocument 404 http://www.hogehoge.com/404error.html

今回をきっかけに、他社サイトを参考にしながら是非かっこいい404エラーページ(?!)を作ってみてください。


【他社の例】
Yahoo!
楽天
ビッダーズ
朝日新聞
@NIFTY
biglobe
ラクーン
NAVER
ハンゲーム

| | Comments (0) | TrackBack (0)

October 18, 2004

HTTPヘッダー研究その1: apacheソフトウェア情報隠蔽しよう

HTTPヘッダーって見たことありますか? 見てみるとソフトウェア情報がバレバレです。

 

---------------------------------------------------
% telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HEAD / HTTP/1.0

 

HTTP/1.1 200 OK
Date: Mon, 18 Oct 2004 11:23:39 GMT
Server: Apache/1.3.31 (Unix)
Last-Modified: Fri, 10 Oct 2003 11:39:51 GMT
ETag: "b7d74-64-3f869a87"
Accept-Ranges: bytes
Content-Length: 100
Connection: close
Content-Type: text/html
---------------------------------------------------

 

こんな情報を出しておく合理的な理由は特にないです。悪意を持ったユーザが
こんな情報をこんな簡単な方法で入手できるのも問題です。そこで今回は
apacheでのソフトウェア情報隠蔽方法をご紹介します。

 

 

【apacheでのソフトウェア情報隠蔽方法】

 

以下の要領でファイルを書き換え、通常の方法でコンパイルすればOKです。
既にインストールされているapacheの場合でも再コンパイルが必要となります。

 

 

※apache1.3系の場合
include/httpd.h
 #define SERVER_BASEPRODUCT "Apache"
 #define SERVER_BASEREVISION "1.3.31"

 #define SERVER_BASEPRODUCT "HogeHoge"
 #define SERVER_BASEREVISION ""

 

※apache2.0系 の場合
include/ap_release.h
#define AP_SERVER_BASEPRODUCT "Apache"
#define AP_SERVER_BASEREVISION AP_SERVER_MINORREVISION "." AP_SERVER_PATCHLEVEL
 ↓
#define AP_SERVER_BASEPRODUCT "HogeHoge"
#define AP_SERVER_BASEREVISION ""

 

 

すると以下のようになります。

 

---------------------------------------------------
HTTP/1.1 200 OK
Date: Mon, 18 Oct 2004 11:23:39 GMT
Server: HogeHoge/ (Unix)
Last-Modified: Fri, 10 Oct 2003 11:39:51 GMT
ETag: "b7d74-64-3f869a87"
Accept-Ranges: bytes
Content-Length: 100
Connection: close
Content-Type: text/html
---------------------------------------------------

 

※ただしapacheの世界シェアは7割以上ということもあり、こんな隠蔽をしてもapacheであることはバレバレだと思ったほうがよいです。今回の対応は、まあやらないよりはやっておいたほうがよいくらいに思ったほうがよいでしょう。

 

| | Comments (0) | TrackBack (0)

September 02, 2004

HTTP圧縮はネットワーク帯域削減に効果的

規模が大きくなるにつれて当たり前なことですがネットワークトラフィック使用量がどんどん増えます。ネットワーク部分の費用って結構高いのでこのコストを減らすことはビジネスの上でとても大切です。

そこで最近果たして我々はネットワーク帯域を効率的に使っているのかという観点で考えました。そしてあることに気づきました。それはHTMLファイルのようなテキストファイルは無駄にスペースやタブがたくさん含まれていたりするので圧縮すればその分ネットワーク帯域を節約できるはずだ、ということです。この件についてちょっと調べて見ると、なんとWEBサーバ自体にHTTP圧縮という機能がついているではありませんか。

ということで早速試してみたのが以下の内容です。ものすごい効果です。

ちょっとした設定変更でネットワーク費用が削減できるなんてすばらしいですよね。是非お試しください。

■参考
HTTP圧縮を使用するだけで帯域幅もコストも削減できる~米調査結果(2003/7 InternetWatch)
IIS 5.0 Web サイトで HTTP 圧縮を使用する
Apacheにmod_gzipを組み込んで帯域を節約したい

| | Comments (2) | TrackBack (0)