apache

64bit OS環境のapacheだと仮想メモリの使用量がやたら増えてる

64bit OSだとVSZが100M超えている。実際の消費メモリは10M程度で32bit OSとあまり変わらず。ほぼ同じ環境の32bit OSだと10~20Mぐらいだったような。 $ ps aux | egrep 'VSZ|apache' USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 14737 0.0 …

リバースプロキシ環境下のapacheではmod_extract_forwardedよりもやっぱりmod_rpaf?

2011/12/04 追記 このエントリ内でmod_rpaf v0.6 では変換したIPでアクセス制御 (allow, deny) が可能と書いてますが、間違っている可能性大ですすいません。 昔すぎて環境も設定もログも残ってないので何とも言えないのですが、勘違いしていただけかもしれ…

apacheで携帯キャリアからのIPによるアクセス許可設定を楽に、かつ安全に運用する方法

User-Agentではなく、IPアドレスできちんと制限したい場合のお話。もちろんキャリアが公開しているIPアドレスを書いておけばいいのだけど、変更があった場合に漏れなく対応したいっていう。思いつきで書いてみる。 追記 IPアドレスを所持していて、かつそのP…

RewriteRuleって30X以外のステータスも返せたのか

メンテ中にRewriteRule使う時にダメ元でR=503を指定してみたら、見事に503が返った。 RewriteEngine On RewriteCond ^/error/ - [L] RewriteRule ^/ /error/503.html [R=503]

mod_proxy経由でhttpsのサイトにアクセスする

httpは行けるのに、httpsはなんでかForbiddenになる。。。と思っていたらmod_proxy_connectもいるのかー。 http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html#allowconnect AllowCONNECT はプロキシの CONNECT メソッドが接続を許可するポート番号の…

forwardでmod_proxyする時にremoteのproxy serverを指定する

多段プロキシにするときとか。簡単だな。 # ProxyRemote match remote-server # remote-server = scheme://hostname[:port] ProxyRemote * http://proxy.example.com:8080/ http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html#proxyremote scheme は実…

apacheのconfigを環境変数から設定

環境変数をexportするだけでよかった。あれ?前はこれだけじゃダメだったような気がしたんだけど。勘違いかな。勘違いだな、うん。apachectlがsource installだとAPACHE_ROOT/bin/envvarsを、debianのpackageだと/etc/apache2/envvarsファイルを読み込む設定…

abはhostヘッダが変更できない?

バーチャルホストのサイトにabしたくて $ ab -n 100 -c 10 -H 'Host: www.example.com' http://192.168.0.1/としてるのに、実際にリクエストしてるヘッダは GET / HTTP/1.0 User-Agent: ApacheBench/2.0.40-dev Host: 192.168.0.1 Accept: */*. Host: www.ex…

htmlにヘッダ、フッタを挿入するmod_layoutを使ってみた

http://hain.jp/index.php/tech-j/2007/04/02/mod_layout http://linux.mini13i.gotdns.org/Apache/mod_layout.html http://download.tangent.org/ http://d.hatena.ne.jp/hogem/20070424/1177386989 コンテンツ作ってる人がやたらと.htmlでSSIを使いたがる…

RewriteRuleのQSAフラグ

QSA、QSAって覚えてるうちに、なにそれ?となってしまった。query string append、とまともに覚えればよかったな。このフラグがないと、RewriteRule時にクエリ文字列が消える。 http://wiki.bit-hive.com/tomizoo/pg/mod_rewrite%20-%20QSA%A5%D5%A5%E9%A5%B…

mod_deflate有効時に、特定のディレクトリで圧縮させたくない場合

apache 2.2。もしhttpd.conf、virtualhost全体でSetoutputFilter DEFLATEとか設定されていた場合に、特定の場所だけしたくない場合はどうしたらいいんだろう。RemoveOutputFileterは拡張子ごとだしなぁ。 Accept-Encodingヘッダを消せばいい? <Directory /hoge/ > RequestHeade</directory>…

mod_deflateの圧縮効果

某サイト*1で実験してみたら、下りのトラフィックが約2/3になった。設定前と比較してCPU使用率、load averageはほとんど変わらず。DeflateCompressionLevelとかは設定せずデフォルトのまま。 *1:PVは約50万/day

phpmyadminをSSLアクセラレータ環境下で使用する

apacheで↓の設定をしている場合に困った。httpsのページでphpmyadminにログインするとhttpに飛んだ。しかもport:443の。 SSLアクセラレータ配下のapacheで、アクセスがhttpかhttpsかを判別する方法 https://www.sample.com/phpmyadmin/ にアクセスしてログイ…

apacheでURLに%2F(スラッシュ"/"をエンコードした文字)を含む場合

URLに%2F(スラッシュ"/"をエンコードした文字)が含まれると404になる〜と悩んでいたら、デフォルトで拒否されるのを思い出した。 http://httpd.apache.org/docs/2.2/ja/mod/core.html#allowencodedslashes 許可する場合は AllowEncodedSlashes On ただしhttp…

apacheのRlimitCPUをhtaccessで上書きさせない方法

ここまで制限する必要があるかどうかはさておき。デフォルトではhtaccessが使用可能なら上書きできてしまう(AllowOverRide Fileinfo)。なのでhtaccessは使用させたいけど、リソース制限したい場合はserver/core.cを書き換えないとダメらしい。 参考 http://m…

apacheでgzipコンテンツ圧縮できているか確認

server側では DeflateFilterNote ratio LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate CustomLog logs/deflate_log deflate とかすればログで確認できるんだけど、clientではどうすればいいのかな。Accept-Encodingヘッダでgzipを送るだけでい…

tomcatのEtag

apache + mod_proxy(_ajp) + tomcatしてる状況で、tomcatとの通信のHTTP headerを見ると、レスポンスヘッダにEtagが出ていた。apacheだとFileEtag noneで消せるけど、tomcatはどうするんだろうか。ちょろっと調べたけどよくわからない。apacheで Header unse…

SSLアクセラレータ配下のapacheで、アクセスがhttpかhttpsかを判別する方法

少し前に試行錯誤して現在はひとまず解決したのですが、同じようにはてなで悩んでた人がいるみたいなので、自分の設定例を軽くまとめてみる。 SSLアクセラレータとは 【SSL accelerator】 - 意味・解説 : IT用語辞典 http://q.hatena.ne.jp/1224205069 SSL…

mod_proxyでhot-standby

active/standbyって言ったりもするかも。日本語のドキュメントにはまだ翻訳されてないんですね。 http://httpd.apache.org/docs/2.2/en/mod/mod_proxy.html http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html status=+Hでhot-standbyになる。 ProxyPa…

apacheのServerAliasに間違ってポート番号付加してしまう

ホストの別名だからServerAliasにはポート番号つけてはいけない。とわかっていても、たまに間違えてポート番号までつけてしまう。当然、目的のVirtualHostにマッチしなくてあわわわわ。半年に1回ぐらいやってしまうな。 追記 ServerNameにポート番号はつけな…

SSLアクセラレータ使用時でもIEのSSL不具合対策用の設定は入れておいたほうがいいかも

参考 http://kazu-360.cocolog-nifty.com/blog/2007/08/apache_mod_ssli_7c51.html http://support.microsoft.com/kb/305217/ defaultのssl.conf 古いIEのSSL時に不具合があるらしくて、apacheのmod_sslでもdefaultのssl.confにこんなの書いてる。 BrowserMa…

apacheに標準で入るmodule

備忘録。 versionはapache-2.2.9。./configureに何もつけずにsource installしたもの。ちなみに--enable-mods-shared=allにするとhttpdのサイズは1.4Mになった。思ってたよりダイエット効果があるみたい。 # ls -lh httpd -rwxr-xr-x 1 root root 2.1M 8月 2…

1つのログをVirtualHostごとのログに分割

apache付属のsplit-logfileを使えば、1つのログからVirtualHostごとに分割できる。ただし、ログの先頭にホスト名がいるのでLogFormatの設定が必要。 http://httpd.apache.org/docs/2.2/ja/vhosts/fd-limits.html log formatの設定 LogFormat "%V %h %l %u %t…

mod_proxyとmod_rewriteでbackendにreverse proxyするとき

backendにrewriteするRewriteRuleにはPフラグをつけること。こうしないとrewrite後のホスト名がbackendのサーバ名になってしまってうまくいかない。ProxyPassを設定するときに、あわせてProxyPassReverse書くのと似たようなもんかな。

CentOS 64bitでapacheをインストールするときのconfigureオプション

※ 2.2.9では解決されてるぽい。--with-expatのオプションがなくなってた。 32bitのライブラリを見に行ってしまって怒られてるみたい。/lib64/libexpat.so.0.5.0が64bitのほう。 $ make /usr/lib/libexpat.so: could not read symbols: File in wrong format …

htmlファイルにEtagが付かなくて困る

http://d.hatena.ne.jp/hogem/20080608/1212891318 これに関連してetagのこと調べていたら、とあるサーバだけ.htmlにEtagが返ってこなくて不思議だった。httpd.conf見直したら原因発見。htmlファイルでSSI使えるようにしてたのが悪かった。 AddOutputFilter …

etagは返さないように設定したほうが良いのかな

http://httpd.apache.org/docs/2.2/ja/mod/core.html#fileetag HTTPのcacheの管理にEntity Tagを使うみたいで、デフォルトではEtagはfileのinode、filesize、timestampで決まる。クラスタ構成で、各webサーバが自前でファイルを持っている場合、inodeが変わ…

.html拡張子でSSIを有効にする

http://httpd.apache.org/docs/2.2/ja/howto/ssi.html#configuring 効率の良い方法 XBitHack Full として、SSIを実行したいhtmlファイルに実行権限をつける。XBitHack Onでもいい。Fullにするとグループに実行権限が付いているとファイルの修正時刻がLast-Mo…

apacheのMaxClientsの適正値調べた

参考. http://www.typemiss.net/blog/kounoike/20060202-61 http://d.hatena.ne.jp/babie/20060201/p3 http://yutuki.blogspot.com/2007/08/apache-maxclients.html http://d.hatena.ne.jp/hideden/20080409/1207740439 わけあってMaxClientsの設定を色々調…

apacheのserver-statusのおまけ

こんなのあったのか。知らなかった。 http://httpd.apache.org/docs/2.2/ja/mod/mod_status.html Location /server-statusにSetHandler server-status書いてるとする。 n秒で自動更新 http://www.example.com/server-status?refresh=N 機械読み取り可能なス…