Lambdaカクテル

ソフトウェア開発者です.玉石混淆です.

ScalaでHTTPプロキシを作ることにした

リバースプロキシに興味がある……というより、画像が含まれるサイトの表示を効率化したかったので作ってみることにした。

HTTP proxy自体の仕組みは簡単で、ブラウザが本来の通信したいサーバに送られるはずのリクエストを代わりにproxyサーバに送るだけで実現している。ただし、ブラウザが送るリクエスト中のURLは相対パス(/)から絶対パスhttp://example.com/)に変化するが。

仕組みがほぼHTTPサーバだからこれはHTTPサーバになるライブラリを使えばうまく書けそうなのでScala用の軽量WebフレームワークSprayを使うことにした。SprayにはHTTPサーバ/クライアント、が高級低級幅広くモジュール化されて提供されており、いじりやすい設計だ。またSprayの内部はAkkaベースで動いているから既存の知識をある程度使いまわせる。

今日書いたコードはうまく動かなかったが明日ごろには動くようになると思う。公開はその後にする。