うまいぼうぶろぐ

linuxとhttpdとperlのメモ

apache

apache + subversionのwebdav上のhtml/textファイルを正しく開く方法

思いつきエントリで。リポジトリのファイルをwebから直接参照したい場合に。 通常のsubversionの設定だと、index.html とかのファイルにアクセスしてもContent-typeがplain/textなのでhtmlソースが表示される。また、ただのテキストな設定ファイルでもエンコ…

Rangeリクエスト勉強

ボディの一部分を取得するとき。レジュームによる再DLとか。応答は206 Partial Contentになる。ただし、apacheでcgi/ssiを使っていて、Centent-Lengthを返さない場合はRangeリクエストされても、200 OKでボディ全体を返す。cgi/ssi でもアプリ側でContent-Le…

apacheはContent-LengthレスポンスヘッダがないとRangeリクエストが有効にならない

っていうことを知らなかった。versionによるかも? 試したのは2.2.15。rangeリクエストはレジュームによる再DLとかで、コンテンツの一部を取得したいときに使う。他には携帯で動画をDLして再生するときとかに使われてる? http://www.studyinghttp.net/heade…

mod_deflateで動的コンテンツにContent-Length レスポンスヘッダを追加する

なんか噂に聞いたのでやってみた。携帯向けではContent-Lengthが必須ヘッダ(docomoとsoftbank)となっているけど、cgi/ssiだと (cgiはアプリ側で記述していなければ) Content-Lengthヘッダは追加されない。でもmod_deflateで圧縮すればapacheが勝手に追加して…

SSLアクセラレータ/リバースプロキシ配下でのwebdav

http://silmor.de/49 http://blog.yoheis.net/2007/08/webdav.html http://blog.dealforest.net/2009/07/subversion_behind_an_apache_reverse_proxy/ http://httpd.apache.org/docs/2.2/ja/mod/mod_headers.html#requestheader http://httpd.apache.org/doc…

共有webサーバでperl, php, python等を提供する場合の設定

断片部に書いてた(放置してた)メモにphpのこと追記して整理。 今までにメモってた色々なエントリ (主にphpをcgiで動作させる関連) apache + suexec, suphp phpのinstall - SAPI cli, cgi, apache DSO module メモ suphpでphp.iniの設定を上書きする phpをcgi…

phpをcgiで動かすときのmod_suphpの特徴

素のcgiモードで動かす場合と比較して。 mod_actionの設定が不要 どのURLにAliasするとかとか考えなくてよい 実行されたphpを特定しやすい suexecのログにはphp-cgi しか記録されない suphpのログには実行したphpファイルまで記録される もちろんsuexec + ac…

phpのinstall - SAPI cli, cgi, apache DSO module メモ

http://www.php.net/manual/ja/features.commandline.php http://www.php.net/manual/ja/security.cgi-bin.php http://d.hatena.ne.jp/hogem/20090809/1249801747 今まで専用サーバだからほとんどapache moduleとして入れていたけど、共有サーバだからcgi版…

apacheのRLimitCPUはworkerでは有効にならないのか

preforkのサーバは制限できてるけど、workerでは効いてないぽいので調べた。 設定 ## 120 second RLimitCPU 120 ## 64M byte RLimitMEM 67108864 確認用のcgi とりあえず無限ループするだけのcgi。RlimitCPUはプロセス生存時間じゃなくてCPU利用時間の制限な…

MultiViewsMatchのデフォルトの動作 について

http://norainu.net/mt/archives/2005/08/multiviewsmatch.html http://httpd.apache.org/docs/2.2/ja/mod/mod_mime.html#multiviewsmatch http://httpd.apache.org/docs/2.2/ja/content-negotiation.html#extensions MultiViewsを使うとファイルの拡張子を…

MultiViewsでコンテントネゴシエーション

http://httpd.apache.org/docs/2.2/ja/mod/mod_negotiation.html http://httpd.apache.org/docs/2.2/ja/content-negotiation.html http://httpd.apache.org/docs/2.2/ja/mod/mod_mime.html Options MultiViewsで設定。Webブラウザ(つかHTTP Request Header)…

apacheのlocationのdocument間違ってる??

あれー勘違いかな。今さらながら初歩的なところに疑問が。 http://httpd.apache.org/docs/2.2/ja/sections.html#file-and-web ここのmanualにあるように、 <Location /private> Order Allow,Deny Deny from all </Location>と設定すると、/privateから始まるURL http://yoursite.example.co…

apache1.3で最大接続数を増やす

apache1.3系を使う機会がなくなってきたけど、たまに要るので。apache1.3系はソースで上限が256固定なので、変更したいなら $ grep HARD_SERVER_LIMIT src/include/httpd.hで出てくる値を適当に変更する。2.0, 2.2だとServerLimitディレクティブで変更可能。

tracで静的ファイルをpythonから分離する

mod_pythonでも効果があったので、trac.cgi経由の場合はもっと顕著に効果が出そう。 直接apache(aliasとtrac.iniのhtdocs設定)で応答した場合 $ ab -c 10 -n 100 http://example.com/tracdocs/css/trac.css | grep 'Requests per sec' Requests per second: …

mod_proxyのProxyPassReverseの意味がようやく理解できた

気がする! なぜProxyPassReverseにbalancer://~~ を設定できないのか *1 なぜProxyPassReverseにajp://~~ を設定できないのか なぜbackendがhttpとajpの場合で、ProxyPassReverseに設定するURLが異なるのか などなど。今まではmod_proxyする機会がほとんど…

apacheのDirectory、Locationを複数書く場合(マージ)の注意点

Directory、Locationなどを複数書いて設定している場合(特にIncludeで入れ子してる時とか)は、うっかりしていると設定間違えかねないので注意ですね。 http://httpd.apache.org/docs/2.2/ja/sections.html#mergin 適用される順番 (正規表現無し) と .htacces…

mod_proxy_ajp or RewriteRule(Pフラグ)でajpに渡すときのheaderを勘違いしてた

RewriteRule ^/hoge/(.*) ajp://localhost:8009/hoge/$1 [QSA,P,L] もしくは ProxyPass /hoge ajp://localhost:8009/hoge とかした場合でもhost headerはlocalhostじゃなくて、originalのHTTPのhost headerを送る。tomcatでvirtualhost(CATALINA_HOME/localh…

apacheのmod_sslで中間証明書設定

最近のssl/tlsはLBで終端しているのでmod_sslのことほぼ忘れている。 http://httpd.apache.org/docs/2.2/ja/mod/mod_ssl.html#sslcacertificatefile SSLCACertificateFile /path/to/cert.pem

apacheで特定のディレクトリ、URLでErrorDocumentの設定を解除する

サイト全体でErrorDocumentを設定しているけど、特定ディレクトリだけ設定を外したいときとか。もっとややこしい記憶があったんだけど、こんな簡単だったか。 http://httpd.apache.org/docs/2.2/ja/mod/core.html#errordocument <Direcotry /path/to/hoge > ErrorDocument 403 default </Directory>

apacheのRedirectとRedirectMatch

RedirectはURLを引き継ぐけどRedirectMatchはでキャプチャした変数を使わない場合は引き継がない。というのをたまに忘れる。 Redirect /foo http://exmaple.com/foo RedirectMatch /bar http://example.com/bar RedirectMatch /baz/(*) http://example.com/b…

mod_rewrite - RewriteCondのANDとORの優先順位について

## 追記 改めて自分の書いた記事を見たら日本語の意味がよくわからないw 結論はRewriteCondに[OR]を書くと、次のRewriteCond とのORになる、ということ ## 追記おわりANDのほうが優先順位高いと思ったら、RewriteCondはORのほうが上なのか?携帯から/m/以外…

apacheのErrorDocument勘違いしてた

ん?apacheのErrorDocument、というかエラーページの出しかた変わった?当然だけどErrorDocumentのURL自体に、アクセス権がない(IP許可されてない)場合、ErrorDocmentは表示されないんじゃなかったっけ? 例えばこんな設定で、documentroot以下に/errがある…

apache + suexec, suphp

参考 http://httpd.apache.org/docs/2.2/ja/suexec.html http://httpd.apache.org/docs/2.2/ja/mod/mod_suexec.html http://bitarts.jp/tech/linux/suexec.html http://www.aconus.com/~oyaji/www/apache_linux_suexec.htm cgi + suexec cgiをapacheユーザじ…

apacheでバーチャルホストごとの同時接続数制限

必要になりそうなので調べた。apache 2.2で試したところ普通に使えるっぽい。 参考 http://sysdesign.pl/mod_cband/ mod_cband 帯域/同時接続数制限 ## kbps rps connection CBandSpeed 1024 10 30 status <Location /cband-status> SetHandler cband-status </Location> directive一覧 sourceの…

slowlorisを実行するには、それなりのスペックが必要?

ちょいとslowlorisを実験してみようとvmware上のdebian5で動かしたんだけど、一向にサーバのapacheが落ちない。なんだかな〜と思って別の物理的なサーバからslowloris実行したらあっさり落ちた。 ホストOSのWindowsもしょぼしょぼだから、そんなもんなのかな…

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 メソッドが接続を許可するポート番号の…