本家のお世話-#4。

 本家のお世話-#3。でちらっと書いたhttpd.conf (Apacheバージョン2.2.17)の設定をちょっと変えてログを分ける件,実はこれ,うまくいくまで悩みまくった。
 だいたいネットの解説で書いてあるのは,たとえば外部からの画像ファイルに対するアクセスをログに記録させたくないとすると,
   SetEnvIfNoCase Request_URI “\.(gif|jpg|png|bmp|css|ico|swf)$” no_log
とやって,
   CustomLog “logs/access.log” combined env=!no_log
とすればいいよ,とかいうのだ。これは,確かにうまくいった。しかし,ここからハマった,ハマった。

 ところで余談だが,ネットの参考サイトで,\.(gif|jpg|png|bmp|css|ico|swf)$の正規表現の違っているところが多かった。ネット上って「悪貨が良貨を駆逐する」ところがあるから,よく参考にされるサイトが間違いを書くと,いつまでもそのままになってしまうところがあって怖い。
 それこそ一番のおおもとの用語 – Apache HTTP サーバ – 正規表現の例には,ちゃんと「例えば、 すべての “images” ディレクトリの下の、すべての .gif と .jpg ファイル は /images/.*(jpg|gif)$ と書くことができます。」と書いてくれているんだけどね。

 で,ハマったのはaccess.logに記載させないno_log群のローカルアクセスと外部アクセスを分けることでだった。しょっちゅうLAN内から自ブログにアクセスするので,しかも開発をやっているわけではないから,サーバの構成を大きく変えたときのエラーくらいしか必要がないので,LAN内からのアクセスはerror.log以外のログから除外してしまいたかったのだ。

 SetEnvIf ディレクティブのところを読んでみると,env-variableは何個並べてもいいことになっているので,
   SetEnvIfNoCase Request_URI “\.(gif|jpg|png|bmp|css|ico|swf|txt)$” images no_log
   SetEnvIf Remote_Addr “^192\.168” Local no_log
   CustomLog “logs/no_log.log” combined env=images
としてみた。no_logでないものについては特に定義しなくてもenv=!no_logだけで全部拾ってくれるんだから,これでいいだろうと思ったんだが,no_log.logに画像へのアクセスとローカルへのアクセスがどちらも記録されてしまう。

 いろいろ試してみたんだが,うまくいってみれば結局簡単なことで,SetEnvIfを使って定義したときには,そのグループに入らないものについては明示的に宣言してやらねばならないということだった。
 つまり,こう書けばいいのだ。
   SetEnvIfNoCase Request_URI “\.(gif|jpg|png|bmp|css|ico|swf|txt)$” images no_log
   SetEnvIf Remote_Addr “^192\.168” !images no_log
   CustomLog “logs/no_log.log” combined env=images

 これで,画像へのアクセスログだけが,no_log.logに記録される。ログがずいぶんすっきりなった。めでたし,めでたし。

 今回もつくづく思ったが,結局はオフィシャルサイトのマニュアルを地道に読むのが一番いいようだ。どこに書いてあるかわからなくて,探し出すのが大変なのが,玉にきずだが……

追記(4/20):
 今見直していたら, SetEnvIfNoCase Request_URI “\.(gif|jpg|png|bmp|css|ico|swf|txt)$” images no_log のところにtxtまで入ってるけど,これは自鯖の都合上で,txtファイルはもちろんimageファイルではない。言うまでもないけど,あえて,蛇足。(笑)

「本家のお世話-#4。」への2件のフィードバック

  1. o6asanさん

    まあ、こちらで投稿は、o6asanさん相手に決まってるですが<笑>

    で、最近、更新頻度が高くなってまして。
    「一寸」、思案してる間に、その思案が、「一寸」で無いですが<笑>

    時期が過ぎまして。

    で、以前の話になるですが。
    「覚え書#4」です。

    私には無関係な話ですので、ほっとけば宜しいですが<笑>
    気になって、引っかかってまして。
    この際と。

    で、
    >編集可能時間を24時間に変更

    この一文の意味が分からんです。
    イヤ、私には無関係の話であるは承知ですが。
    何で、編集に時間制限がと。

    そんな事で、単なる疑問です。

    でで、今回の件です。

    >結局はオフィシャルサイトのマニュアルを地道に読むのが一番

    基本原則、公式サイトが安全確実ですねえ。
    中には、図面入りで懇切丁寧なる解説サイトもあったり致しますが。
    「余程」で無いと、採用<?>致しませんですねえ。

    この「余程」の基準も難しいですが<笑>

    1. こんばんは。

      > こちらで投稿は、o6asanさん相手に決まってるですが<笑>

      間違いないです(笑)。コメント投稿者同士でやり取りをいただいてもいいのですが,なかなかそうはならないです。このあたりが,りりさんがTODOSを始められた理由なのかなと思います……

      > で、最近、更新頻度が高くなってまして。

      例の通りなものですから,バタバタはしてますが,結構時間ができました。片づけをしてるか,パソコンをいじっているか,出かけているかという状態です。たまには,生理作用も満たしてやらないといけませんが(笑)。

      > >編集可能時間を24時間に変更

      これはですね,WordPressというのには,デフォルトのコメント編集機能というのがないんです。
      MovableTypeも同じだったので,向こうの人との考え方の違いかもしれません。もっとも,やはりコメントを訂正したいというのは人情で,これを可能にするプラグインがいろいろあります。そのうちの一つを,このブログを始めてからすぐにjuneさんに倣って使い始め,今に至っています。

      このプラグインによる設定を変えたということですね。ただ,その記事に対してどなたからでも新しい投稿があると,時間内でも編集ができなくなります。この辺も,他の方の意見がついた後で内容を書き直すと,もめごとのもとという考え方なんでしょうか。

      > >結局はオフィシャルサイトのマニュアルを地道に読むのが一番

      こっちのほうは,厳密にいうと一般論ではなく,昨年取り組んだDazukoFS,今回のcURL・Apacheのlogと,同じようなことが引き続いたので,それに対しての私的感想ですネ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください