ZAPAnet総合情報局 > ZAPAブログ2.0 > 今すぐApacheログ設定の見直しを!

今すぐApacheログ設定の見直しを!

2007年11月03日 プログラミングTIPS
「あぁ、Apacheのログの設定方法を間違えていた…!」
2年間も。2年間も、間違ったまま運用していました…!

Apacheのアクセスログ設定の詳細は以下に。

1.ヒット数の少なさに気付く

Apacheのログ設定がおかしいことに気付いたのは、ここ1週間のヒット数を見たときです。
Webalizerという解析ソフトを使っているわけですが、zapanet.infoの1週間のヒット数がこのようになっていました。
日付 ヒット数
10/27 642140
10/28 593685
10/29 416319
10/30 409333
10/31 398754
11/01 413443
11/02 444468
あれっ、ヒット数少なくない?
ということに気付きました。
ここ数日間のアクセス量を考えれば、もっとあっていいはずでした。

2.原因を調べる

なんで少ないんだろう?
と思い、いろいろ調べてみました。
アクセスログを調べてみたところ、もっとログが残っていていいはずのURLのログが記録されていないことに気付きました。

それは、例えば
https://zapanet.info/ar-tonelico2/wiki/
のようなURLのログです。
なんで記録されていないんだろう?

3.なぜアクセスログに記録されないのか?

アクセスログに記録されないからには、何かしらの理由があります。
Apacheの設定ファイル「httpd.conf」を開きました。
このファイルにログの設定方法と除外設定を書いてあります。
ログの設定方法には間違いがなさそうだったので、除外設定を調べました。
たいした除外設定はしていないので、このようになっていました。
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(JPG)|(GIF)|(PNG)|(bmp)|(css)|(ico)|(ICO)$" no_log
SetEnvIf Request_URI "default\.ida" no_log
SetEnvIf Request_URI "cmd\.exe" no_log
SetEnvIf Request_URI "root\.exe" no_log
SetEnvIf Request_URI "Admin\.dll" no_log
SetEnvIf Request_URI "NULL\.IDA" no_log
画像ファイル、CSSファイル、ICOファイル、ワームアクセスを除外設定してあります。
う〜ん、問題ないよね…?
としばらく悩んでいると、ひとつのことに気づきました。
「(ico)」と「ar-tonelico」の共通点に!
ar-tonelicoにはicoの文字列が含まれています。

もしかして、コレが問題!?
と思って、Googleで検索してみたところ、そこら中のサイトでこのような書き方が紹介されていました。
やりたいことは、「.拡張子名」で終わるファイルを除外することです。
まっ、まさか、Linux解説サイトの記述がまちがってるわけじゃないよね? ざわざわ

4.正規表現を見直す

よくよく考えてみると、除外設定は正規表現で指定してあるわけなので、記述内容が間違っていることに気付きました。
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(JPG)|(GIF)|(PNG)|(bmp)|(css)|(ico)|(ICO)$" no_log
このように記述してしまうと、「.(ドット)」がかかるのは最初の「gif」ファイルのみ。
拡張子名で終わるのは最後の「ICO」ファイルのみです。
間の「(jpg)|(png)|(JPG)|(GIF)|(PNG)|(bmp)|(css)|(ico)」には、ドットの設定も末尾の設定もかかっていません。

正しく書くと、このようになります。
SetEnvIf Request_URI "\.(gif|jpg|png|JPG|GIF|PNG|bmp|css|ico|ICO)$" no_log
このように書かないと、本来除外する予定の無かったHTMLファイルやPHPファイルまで除外されることになってしまいます。
ar-tonelico
などの「ico」を含むURLまで全て除外してしまいます。
2年前にLinux解説サイトの内容をそのまま信用してしまっていたのが、そもそもの間違いの元でした。

phpspotの人は正規表現について語らないほうがいいのでは」、「phpspotの件の続報」、「phpspotの件のまとめ」では、めずらしく秋元さんが「自分の面子やアクセス数だけじゃなくて、それを読んだ読み手がどういう影響を受けるかも考えるべきなんじゃないかなあ。」と、間違った正規表現にきつく突っ込んでいました。
この発言をしたのは、自分のような「何の考えもなしにコピペしてしまう人間」に悪影響を与えてしまうことを恐れていたからだったんですね。
正規表現がよくわかっていなかった2年前とはいえ、「多くの解説サイトで書かれているから大丈夫だろう」という理由だけでコピペしてしまったのは間違いでした。

5.今までのアクセスログは…

ということは、今までのアクセスログって…
今年のアクセスログ(10ヶ月間)は、このようになっています。
年月 ヒット数
Oct 2007 15726424
Sep 2007 13980994
Aug 2007 12438559
Jul 2007 12290948
Jun 2007 10278590
May 2007 11923255
Apr 2007 10833164
Mar 2007 14295088
Feb 2007 16207735
Jan 2007 20588095
ですが、これは間違ったヒット数で、本当はもっと多かったことがわかりました。
今まで全然気付きませんでした。(アクセスログに記録されたヒット数が少ないからといって、特に困ることもないんですけど)

6.Apacheログ設定の見直しを!

正規表現間違えるなんて、初心者だけだよ!
と思われるかもしれませんが、Googleで検索すると大量に間違った記述方法が見つかります。
それを参考にした人は、そのまま間違えてしまう可能性が高いと思います。(自分のように)
Linuxの解説サイト自体が間違った書き方を教えているわけですから、被害は相当広がっていると思います。(しかもいつまで経っても修正されていないということは、間違いに気付いて教えてあげている人すらいないのかもしれません)

もしApacheの除外設定をした覚えがある人がいたら、一度見直してみてください。


おまけ

ちなみに、「ar-tonelico」のアルトネリコ2とは、こういうゲームです。
(C)GUST CO.,LTD. 2007 (C)BANPRESTO 2007


↑お風呂に入ったり↑


↑詩魔法を詠ったり↑


↑呆れられたり↑


↑セラピしてもらったり↑


↑コスチュームを手に入れたり↑


↑必殺技使ったり↑


そういうRPGです。(ちょっと誤解があるかも)
興味のある方はぜひ!
アルトネリコ2 世界に響く少女たちの創造詩
バンプレスト
2007-10-25

コメント:前作とは似て非なるもの。良作
コメント:音楽は最高、ゲーム内容は素材は良いのに少々勿体ない
コメント:比べちゃいけないんだろうけど
コメント:唄の素晴らしさ
コメント:歌はいいぞ!!

by [Z]ZAPAnetサーチ2.0

追記

ログ設定を直した結果とmod_expiresの設定