アジャイル,Trac,オープンソースなどの話。認定スクラムマスター。Twitterは@ryuzee
apacheでごにょごにょやる必要があったのでまとめておく。
特定の条件に合致した場合は、アクセスログ(エラーログ)に出力しないように設定する場合は以下のようになる。
1行目:画像とCSSとJSっぽいリクエストはログをとらない
2行目:自マシンからのアクセスもログをとらない
3行目:LANの中からもどうせ監視系だからいいや
4行目:nagiosという文字が含まれた場合は、これもURL監視だからいいや
ログのローテーションはapache1.3系だとcronologを使っていたのだが、apache2系だとrotatelogsを使う。
これで1日毎にファイルが分かれてYYYYMMDD.logに出力される。簡単だよね。
今日はじめて知ったのでメモ。
【要件】
【回答】
mod_rewriteではなく、mod_proxyを使うのね。
ProxyRemote * http://proxy.example.com:3128
ProxyPass /hage http://foo.example.jp/fuga
ProxyPassReverse /hage http://foo.example.jp/fuga
なお、認証付のProxyは対応していないとのことだが、Proxyの指定でid:password@を頭に付けてもダメなのかな?
ローカルではXAMPP使っていて、Eclipseから色々叩いているのだが、嵌ったのでメモ。
XAMPPに同封されているPHP4は--with-opensslでコンパイルされていないので、以下のようなコーディングは利用できない。
こいつを実行すると
てな感じでエラーになる。
これの何が不便かっていうと、PHP4の案件で、ユニットテストを使うときにSimpleTestのWebTestCaseがSSLで動作してくれない。くそ。
PHP4の寿命は今年8月だった気がするので、そろそろ真面目に捨てろ、ということだな。
mod_security対応強化の結果
こんな感じで拒否した件数調査。
# cat /var/log/httpd/error_log | grep "[error]" | grep "[Wed Mar 21" | grep mod_security | wc -l
3/21(水)
1473
3/20(火) 639
3/19(月) 1671
ということで結構良好。但しあまりに数が多いせいで、サーバに負担が掛かっている。Zope+Ploneだからなぁ。
ブラックリストを作ったり色々しているが、トラックバックスパムが減らない。かなり鬱陶しい。
ということでmod_securityで対応することにした。
上記のサイトからmod_securityのポリシーファイルをダウンロードして設置すればよい。
構成は以下の通りだ。
| 設定ファイル | 役割 |
|---|---|
| apache2-rules.conf | 一般的なアプリケーション用のルール |
| badips.conf | 拒否するIPアドレスリスト(足りない分は自分で追加すること) |
| blacklist.conf | コメントスパム防止 |
| blacklist2.conf | 経由したプロクシやリクエスト元による拒否 |
| exclude.conf | SQLインジェクションの拒否 |
| jitp.conf | 色々なアプリケーションの脆弱性への対応 |
| proxy.conf | Proxyとして利用されることを拒否する |
| recons.conf | よくわからん・・・ |
| rootkits.conf | rootkitによるアクセスを拒否する |
| rules.conf | アプリケーション保護のルール |
| useragents.conf | 変なユーザエージェントをはじく(存在しないもの、一文字違いとか) |
これで、スパムが減ると良いねぇ。
このサイトは他のサーバからnagiosで監視しているのだが、どうにもこうにもパフォーマンスが悪いゆえか、誤検知が多い。ちょっと原因調査とパフォーマンスチューニング。
とりあえず現状。
そんな感じな現状で、apache2についているabで性能測定してみた。同一URLに150回リクエストを投げてみた。
まずは、
完全静的ページ → とりあえず秒間93リクエストなので、普通に結構さばける。
Requests per second: 93.31 [#/sec] (mean) Time per request: 10.717 [ms] (mean) Time per request: 10.717 [ms] (mean, across all concurrent requests)
apache+PHP+MySQLのscuttle部分 → MySQLも絡むのでこんなもんか。
Requests per second: 6.62 [#/sec] (mean) Time per request: 151.161 [ms] (mean) Time per request: 151.161 [ms] (mean, across all concurrent requests)
次にPloneの/contents/apacheの一覧部分。 → PloneでCacheFuでキャッシュしているので早い。
Requests per second: 27.81 [#/sec] (mean) Time per request: 35.960 [ms] (mean) Time per request: 35.960 [ms] (mean, across all concurrent requests)
次にPlone+COREblogで、個別のエントリページ。 → なんかえらい遅い。
Requests per second: 1.07 [#/sec] (mean) Time per request: 930.939 [ms] (mean) Time per request: 930.939 [ms] (mean, across all concurrent requests)
次にPlone+COREblogのトップページ → さらに遅い。
Requests per second: 0.57 [#/sec] (mean) Time per request:1751.151 [ms] (mean) Time per request: 1751.151 [ms] (mean, across all concurrent requests)
ということで、ボトルネックはCOREblogにあるような気がするのだが、どうなんだろうか???
最近妙にWebの応答が悪ぃなーー、なんて思ってたのでチューニングした。
問題は、以前にFC3からFC4にした際にapacheの設定がごっそり変わったこと。
FCのapache(2.0.54)の場合、/etc/httpd/conf.d以下にモジュール毎の設定ファイルをじゃぶじゃぶ入れているのだが、これがFC4のタイミングでめちゃめちゃ増えてしまった。しかも微妙にセキュリティ上問題になるようなconfファイルが平然とぶち込まれてた。
なんで、とりあえず、
コメントアウトした内容は以下の通り。かなりの箇所である。
結果、当社比で3割ほど性能向上した模様。ついでに
HostnameLookups Off
にして、当初の性能の倍程度を実現。あとはKeep-Alive関係いぢれば吉。
#そんだけやってもZope使っているとサイトが遅い罠・・・・。
とりあえずこの記事が256番目の記事らしい。なんと縁起の良い数字であることかw
単なるメモ。
analogでは、langファイルやドメインファイル(jpedom.tabとかjpsdom.tabとか)の指定をanalog.cfgに書くわけだが、サンプルのcfgではlang/jpedom.tabというように相対パス指定で記載されている。
これが実はハマリの要素で、cronなどでanalogを動作させると、カレントディレクトリがanalogのバイナリとは異なる場所になるので、きちんと設定が反映されないことになる。
したがってanalog.cfgの外部ファイルの読み込みは、すべて絶対パス指定で書いておいた方が無難。
DNSFILEとかの指定も同様。
mod_rewriteの大ハマリだが、冷静にやったら解決。ちなみにRewriteRuleだけではできない。
答えは以下のとおり。
肝はRewriteCondを使用してQUERY_STRINGのマッチをかけて、その値をRewriteRuleに引き渡す。
その1点のみ。上記の例だと、
/cgi-bin/from.cgiへのリクエストで
QUERY_STRINGがx=[0~9の数字6桁+00]で構成されているときは
/to.phpに転送する。そのときにはパラメータはy=に数字頭6桁を指定する
ということになる。
あーーーーー、すっきり。
apacheのmod_rewriteにえらくはまってます。会社で2時間程度いじったけど解決せず。そのあといままで家の鯖で試してた。
こんなに熱くなったの久々(w
はまっている内容(やりたいこと)は/cgi-bin/from.cgi?x=1にアクセスが来たら、/to.php?y=1に振り替える
んでもって書いたRewriteRuleがこれだが、うまくいかん
RewriteRule ^/cgi-bin/from.cgi?x=([0-9]{1})$?? /to.php?y=$1 [R,L]
はまってそうなポイントとして
日記 PHP オープンソース インストールマニアックス IIS Trac MySQL Perl Linux Agile・生産性向上 wordpress フリーソフト 自宅サーバ 書評 ブックマーク phpMyFaq TraM Plugin 早起き Delphi apache CakePHP Firefox Ruby eclipse セキュリティ プラグイン アジャイル mojavi Subversion Ajax/Web2.0 SQLServer Zope サーバ フレームワーク phpBB 仮想化 PostgreSQL OpenVZ scuttle CMS 文字化け 自宅 翻訳・日本語化 ApacheDS LDAP Excel 生産性向上 CodeIgniter XAMPP hacks taskfreak 修正 言語ファイル Ajax SBM ダウンロード HTML::FillInForm mod_security 情報共有