計算機メモ目次 (目的のページと内容が一致しない場合, 目次から探してください)
Solaris 8 上で Apache 2.2 の応答を UTF-8 に変換する中継サーバを構築する
必要なもの
Delegate
中継サーバ[リバースプロキシサーバ](ここではバージョン9.9.7を利用)
http://www.delegate.org/delegate/
Apache
モジュールの動的リンクが可能なように構築された, すでに稼働中の apache
mod_extract_forwarded
中継サーバが付加したアクセス元のIPアドレスを要求元としてapacheに渡すapacheモジュール(ここではバージョン0.6を利用)
これを利用しないとアクセス制御ができない.
http://www.openinfo.co.uk/apache/index.html
Delegateの構築
src/Makefile の ADMIN を設定
gmake CC=gcc を実行 (Forte6 の cc は不可)
src/delegated を適当なディレクトリにインストール
下記の起動スクリプトを作成し /etc/rc3.d/S99codeconv などとする
ここでは delegated は /usr/local/sbin にインストールしてある
delegated は 10080 番ポートを開いた apache サーバにクライアントからのリクエストを中継するものとする (MOUNT)
POST で Apache が受け取る漢字コードは Solaris8 標準の EUC-JP にしておく (CHARCODE)
#!/bin/sh
#
# Code conversion / Delegate
#
DELEGATED='/usr/local/sbin/delegated'
case "$1" in
'start')
exec $DELEGATED -P80 \
SERVER=http \
MOUNT="/* http://<Apacheサーバのホスト名>:10080/*" \
URICONV=where:any \
PERMIT="http:<Apacheサーバのホスト名>:*" \
RELAY=proxy \
HTTPCONF="add-qhead:X-Forwarded-For:%a" \
HTTPCONF=post-ccx-type:+,multipart/form-data \
CHARCODE=UTF-8 CHARCODE=EUC-JP:tosv:http
;;
'stop')
exec $DELEGATED -P80 -Fkill
;;
'restart')
exec $DELEGATED -P80 -Fkill-HUP
;;
*)
echo "Usage: $0 { start | stop | restart }"
exit 1
;;
esac
exit 0
mod_extract_forwardedのインストール
Apache 2.2 で利用するためのソースの修正
http://d.hatena.ne.jp/dayflower/20060603/1149314379 による下記のパッチを mod_extract_forwarded.c にあてる.
--- mod_extract_forwarded.c.orig 2004-03-09 00:27:36.000000000 +0900
+++ mod_extract_forwarded.c 2007-04-18 10:27:08.945045803 +0900
@@ -758,7 +758,7 @@
{
if (conf->debug == MEF_DEBUG_ON)
{
- fprintf(stderr,"MEF: phase:%s, $s not acceptabler proxy, %s\n",
+ fprintf(stderr,"MEF: phase:%s, %s not acceptabler proxy, %s\n",
phase, conn->remote_ip, r->unparsed_uri);
fflush(stderr);
}
@@ -925,6 +925,9 @@
* spoof one) is added to the X-Forwarded-For header.
*/
static int mef_before_proxy_http(request_rec *r,
+#if AP_SERVER_MINORVERSION_NUMBER >= 2
+ proxy_worker *worker,
+#endif
proxy_server_conf *pconf,
char *url, const char *proxyname,
apr_port_t proxyport)
コンパイル&インストール
apxs -i -c -a mod_extract_forwarded.c
設定
下記の内容の <Apache Root>/conf/extra/httpd-extract-forwarded.conf を作成
MEForder refuse,accept
MEFrefuse all
MEFaccept [Apacheの稼働するサーバのIPアドレス]
httpd.conf に下記のエントリを追加
Include conf/extra/httpd-extract-forwarded.conf
httpd.conf にて delegated から中継されたパケットを受け取るポートを通常の80から変更
ここでは delegated の設定に合わせて 10080 とする
Listen 10080
Delegate の起動と Apache の再起動
/etc/rc3.d/S99codeconv start
apachectl -k restart
計算機メモ目次 (目的のページと内容が一致しない場合, 目次から探してください)