うまいぼうぶろぐ

linuxとhttpdとperlのメモ

apache

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

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 機械読み取り可能なス…

mod_proxy,mod_proxy_balancerのstickysessionのテストとお勉強

sticky session アプリケーションを作ったこともなくて、セッション・Cookieの意味をあまり理解してないので、 mod_proxyの次の説明を読んでも実際の動作のイメージが掴めないので実際にテストしてみた。 http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy…

mod_vhost_aliasでサブドメインを動的に生成

ホスト名、FQDNでドキュメントルートを振り分けてサブドメインを動的に作る方法ってどうやるの? こないだこの記事書いたときはmod_rewriteでやったんですけど、mod_vhost_alias使ったらもっと簡単に出来るらしい。mod_vhost_aliasは標準でインストールされ…

mod_rewrite - PTフラグをつけたRewriteRuleの置換対象について

ちょっとこれではまってしまいました。 通常、RewriteRuleで置換対象に書くことができるのは次の4つですよね。 ファイルシステムのフルパス ドキュメントルートからの相対パス URL(http:〜〜) -(ハイフン) ref. http://httpd.apache.org/docs/2.2/ja/mod/mod…

ホスト名、FQDNでドキュメントルートを振り分けてサブドメインを動的に作る方法ってどうやるの?

例 http://aaa.example.com/ => /home/aaa/public_html http://bbb.example.com/ => /home/bbb/public_html ユーザのアカウントに対して http://example.com/username/ http://example.com/~username/ ではなくて、 http://username.example.com/ こういうUR…

HostNameLookups Offが効かなくて困った

HostnameLookups offしてるのにログを見るとリモホがFQDNで出てくる。なんでだ。 と思ってたら設定が悪かったぽい。 allow from localhost allow from example.com みたいに、名前で許可/拒否する設定が入っていると逆引きが発生するのかー。そりゃそうだわ…

apache-2.2.6にProxyPassMatchなんてのが出来てたよ!

http://www.apache.org/dist/httpd/CHANGES_2.2.6 *) mod_proxy: Added ProxyPassMatch directive, which is similar to ProxyPass but takes a regex local path prefix. [Jim Jagielski] これで正規表現が使えるー。嬉しい。何気にChangelog見てたら気付い…

ServerAliasを使わずにVirtualHostの設定コピペするの禁止

http://example.comでもhttp://www.example.comでも同じコンテンツ見せたい、みたいな場合のお話。こんな時ってServerAlias使いますよね? <VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /home/hoge/public_html </VirtualHost> しかし、たまにこんな…

mod_proxy_balancer設定memo

忘れた頃にハマりそうなので備忘録。 DSOの時はmod_proxy_http.soも忘れないように mod_proxy.soとmod_proxy_balancer.soだけじゃダメだった。良く考えればBalancerMemberでhttpに振り分けるんだから当然か。 リバースプロキシさせないディレクトリのProxyPa…

moduleをDSOでビルド、インストール

http://httpd.apache.org/docs/2.2/ja/dso.html # cd /path/to/src/foo # apxs -a -i -c mod_foo.cおー、簡単。"-a"を指定するとhttpd.confに自動的にLoadModuleの設定も追加される。 上記コマンドで動かない場合 apacheに元々配布されてるmod_proxy、mod_ss…

apacheのIfModuleの書き方

staticとsharedに関係なく書き方は同じなんですね。違うもんだと思い込んでました。トホホ。 # モジュールのファイル名 # モジュール識別子 モジュール識別子が使えるのはapache2.1以上。mod_hoge.cって書き方はstaticなものだけだと思ってた。理由は、httpd…

同じworkerの設定なのにサーバによって起動してるプロセス数が全然違う

同じコンパイルオプション、httpd.confなのに、あるサーバだと大量にhttpdプロセス(スレッド?)がいて、 あるサーバだと極端に少ない。サーバ見てみたらkernel違ってた。これが原因か。 プロセス多い kernel 2.4 プロセス少ない kernel 2.6 ぐぐったらやっぱ…

動的にバーチャルホストを設定する方法を調べ中

めっちゃ自分メモです。JugemとかXREAみたいにユーザが登録した瞬間に、サブドメイン*1とバーチャルホストの設定が完了してすぐサービスとして使えるようにするためにはどうすればよいか調べてます。httpd.conf編集するのが面倒くさいというか、 ユーザが登…

LoadModuleで読み込んだphp4をIfModuleで囲ったら設定されなかった

staticにコンパイルした奴じゃないとダメ? えーそんなことないよなーと思ってapacheのドキュメント見る。 core - Apache HTTP サーバ http://httpd.apache.org/docs/2.2/ja/mod/core.html#ifmodule 前者の場合は、module と名付けられたモジュールが Apache…

携帯キャリアのIPアドレス帯域memo

docomo http://www.nttdocomo.co.jp/service/imode/make/content/ip/ au http://www.au.kddi.com/ezfactory/tec/spec/ezsava_ip.html softbank http://developers.softbankmobile.co.jp/dp/tech_svc/web/ip.php willcom http://www.willcom-inc.com/ja/servi…

apacheで静的ページに動的にHTMLを組み込む

mod_layout:静的ページに動的にHTMLを組み込む - ぎじゅっやさん 広告とかには便利そう。他にも色々使えるかも。