apache

APR-util の DBD API を使ってみる

APR(の一部の APR-util)には,各種データベースを統一インタフェースで使うことのできる DBD API があります。のでちょっと使ってみました。ちなみに普通に C でアプリケーションを書いている人にはあまりおすすめできないと思います。統一インタフェース…

Apache の sub request と internal redirect

極私的メモ。 通常のリクエスト処理フロー modules/http/http_core.c で ap_process_http_connection() 関数 を ap_HOOK_process_connection として登録しており,これが(ap_HOOK_process_connection をオーバーライドしていなければ)通常のリクエスト処理…

ap_sub_req_lookup_file() の仕様を勘違いしていた

translate_name に hook をかけてそこで ap_sub_req_lookup_file() したところ,セグフォってしまいました。んーなんでだろうと思って [http://httpd.apache.org/docs/2.2/mod/mpm_common.html#coredumpdirectory:title=CoreDumpDirectory] を指定して core …

複数のテストサーバをリバースプロキシで集約 (4)

mod_proxy_mapper のコードを詳説します。 mod_proxy に処理を移譲する方法 どこかのフェーズで request_rec *r; r->filename = "proxy:http://example.com/foo/bar"; r->proxyreq = PROXYREQ_REVERSE; r->handler = "proxy-server"; のように設定すると,ha…

複数のテストサーバをリバースプロキシで集約 (3)

複数のテストサーバをリバースプロキシで集約 (1) - daily dayflower と 複数のテストサーバをリバースプロキシで集約 (2) - daily dayflower の続きです。mod_rewrite の RewriteMap を使ってごにょごにょしましたが,なんともまどろっこしかったです。そも…

mod_proxy_mapper.c

/* ** mod_proxy_mapper.c */ #include "httpd.h" #include "http_config.h" #include "http_log.h" #include "http_protocol.h" #include "http_request.h" #include "http_core.h" #include "ap_config.h" #include "apr_strings.h" #if 0 || defined(__GN…

複数のテストサーバをリバースプロキシで集約 (2)

複数のテストサーバをリバースプロキシで集約 (1) - daily dayflower の続きです。前回 mod_proxy と mod_rewrite を組み合わせてリバースプロキシ環境を構成しました。が,そのままだとプロキシ先のサーバが増減するたびに設定ファイルを書き換えて httpd …

複数のテストサーバをリバースプロキシで集約 (1)

各所でテストサーバが立ち上がっていて,これらは一台のリバースプロキシの背後にいます。普通に mod_proxy でやっているのですが,テストサーバを増やすたびに設定ファイルを書き換えて httpd を再起動,としなくちゃいけないのが煩わしい。で,リバースプ…

Apache の provider 機構 - 他モジュールに移譲するしくみ

2008-11-13 追記: タイトルを変更しました用語定義をしておきます。 consumer provider の提供する情報を取得する役割をになう provider consumer の要求する情報を提供する役割をになう 「情報」というのは const void * 型の値1つ,なのでなんでもよいです…

フックから Apache の全体像を追う

DSAS開発者の部屋:[補足記事]Apache 2.0 の hook 一覧(apache module 開発事初め その3-3) はモジュールを書く際にどこにフックをしかけるかという点で非常に参考になります。が,いまだにいまいち Apache からどのように呼び出されるか実感がわきません。ひ…

HTTP/1.1 の同時接続数について

はてなブックマーク - Fasterfoxが最強すぎる件 - 真性引き篭もり が盛り上がってたので,机上の話だけですが,いまさら書いてみます。 RFC (2616) での記述 Clients that use persistent connections SHOULD limit the number of simultaneous connections …

v8 (Google JavaScript Engine) を Apache のモジュールにしてみた

ちまたでは Google Chrome より v8 がアツいらしいので,やっつけでつくりました。Joke module です。ふつーに CGI モジュール的につくってもよかったんですが,なんとなくテンプレート的にしました。ほんとうは mod_perl みたいにサーバのあらゆるところに …

ProxyPass には retry=?? を指定しておく

Apache でリバースプロキシを使い,フロントサーバからアプリケーションサーバにアクセスするようにすることも多いかとおもいます。このとき,アプリケーションサーバを落とすと,フロント(プロキシサーバ)がブラウザに 503 Service Temporary Unavailable…

mod_subsitute と mod_ext_filter

HTTPなアプリケーションのデバッグのために出力の一部を書き換えたいということがある。アプリケーションを書き換えたくない状況ではApache HTTPサーバのフィルタで対応できそうだ。そういうわけで、何か適当なモジュールはないだろうか検索してみたところ、…

mod_extract_forwarded を改造

mod_proxy_http を使うかどうかでソースを書き換えなくちゃいけないのは面倒なので,APR の DSO 関数とか使ってがんばってみました。本来は関数の hook は register_hooks callback stage で登録するのが筋なんですが,ap_pre_config hook で登録するという…

フィボナッチ数列を計算する Apache モジュール

フィボナッチ数列を計算するのが流行っていると聞いて飛んできま……あれ別に流行ってないんですか。そうですか。 せっかくなので,上位の引数の結果を計算するために*1,サブリクエストという機能を使ってみました。サブリクエストというのは SSI とかの #inc…

いっちょ Apache のフィルタモジュール講座でも書いてみるか

と思ったら知ってることはすべて(しかもそれ以上)mod_perl のドキュメント(⇒mod_perl: Input and Output Filters)に網羅されていました。orz。Perl に疎くてもフィルタモジュールを書く人なら目を通しておいて損はないです。つかこのレベルのドキュメン…

CSS に条件付きコメント機能を導入する Apache モジュール mod_css_cond

を書きました。⇒mod_css_cond - daily dayflowerこれで blockquote { /*#if ! IE */ opacity: 0.8; /*#else / filter: alpha(opacity=80); /#endif*/ } div { width: 420px; border: 2px; /*#if IE/ width: 416px; /#endif*/ } li { color: /*#if IE/ #00f /…

mod_css_cond

以下の仕様は今後変更される可能性があります。 ビルド方法 $ /usr/sbin/apxs -c mod_trimxml.c $ sudo /usr/sbin/apxs -i -A mod_trimxml.la 設定 Filter として CSSCOND を設定します。 .htaccess の設定例 # LoadModule css_cond_module modules/mod_css_…

mod_trimxml というのを作ってみた

最近いそがしくて書く暇がなかったんで,ひさびさにプログラミングしてみました。MSIE 6 だと DOCTYPE 宣言より先行して XML 宣言(等)があると Quirks mode になるのは有名です。それが不満だったので Apache のモジュールを作りました。MSIE だと先頭の …

mod_trimxml

ビルド方法 $ /usr/sbin/apxs -c mod_trimxml.c $ sudo /usr/sbin/apxs -i -A mod_trimxml.la 設定 Filter として TRIMXML を設定します。.htaccess の設定例 # LoadModule trimxml_module modules/mod_trimxml.so <IfModule mod_trimxml.c> AddOutputFilterByType TRIMXML text/html</ifmodule>…

SPNEGO

ちょっと時間がなくなってきたので,自分用メモメモ。 SPNEGO 認証にまつわる RFC RFC 4559 - SPNEGO-based Kerberos and NTLM HTTP Authentication in Microsoft Windows RFC 2743 - Generic Security Service Application Program Interface Version 2, Up…

Apacheで統合Windows認証を使う

前書き 統合 Windows 認証とは,ドメインの認証情報を使って HTTP サーバに認証してもらう方式です。Windows クライアントがドメインにログインしていれば,認証ダイアログが出現することなく自動的に認証されます。統合 Windows 認証には以下の2通りがあり…

ClearSilver を Apache のフィルタモジュールとしてインプリメントしてみた

これまでもちらほらと ClearSilver という名前を聞いたことがあったんですが,YAPC::Asia での ikebe さんの発表でさらに興味を持ちました。 mod_livedoor_page.so http://www.livedoor.com/ use ClearSilver Template engine. top-page is not changed so f…

mod_csfilter

カッとなって作った。詳しくは後日書く。ビルド等は % apxs -c -I /usr/include/ClearSilver -l neo_cs -l neo_utl -l neo_cgi mod_csfilter.c % sudo apxs -i mod_csfilter.laみたいな感じで。