delegatedでカスケード

今ではビンテージな手法なのかもしれないが、load balancerのNATの中にあるHTTPサーバに直接アクセスするために、delegatedを2階建てした。
単純に、privateアドレスの80番ポートを境界のサーバでreverse proxyすることは、どういうわけか、できなかった。おそらく、Gigabit-ethernetのaggregatorでロードバランス用のルーティングが邪魔してるんだろう。
そこで、
private addressのサーバ(websvr.private)でポートの付け替え

delegated -P8888 SERVER=tcprelay://websvr.private:80 PERMIT="*:websvr.private:*"

NAT境界にある中継のサーバ(proxy.mynet)

delegated -P54321 SERVER=tcprelay://websvr.private:8888 PERMIT="*:websvr.private:*"

clientのマシンからのアクセス

$ telnet proxy.mynet 54321
Trying 123.45.67.89...
Connected to proxy.mynet.
Escape character is '^]'.
GET / HTTP/1.0
HOST: www.mynet

HTTP/1.1 200 ...

ところで、なぜ、

SERVER=http://websvr.private:80

としなかったかというと、delegatedはやや賢すぎて、SERVERの引数で指定したホスト名でvirtual hostのホストを指定する host: リクエストヘッダを送ってしまうからだ。(本当にそうなのかは、大本のHTTPサーバを自作するか、delegatedのログを詳細にして、送られてきたヘッダを解析しなきゃならないけど、面倒なのでパス)
1台のサーバで複数のドメイン、ホスト名を担っている場合には、この機能が邪魔になるため、tcprelayというlow(raw) levelな指定をした。