開発用のプロキシサーバーをサクッとたてる

仕事で開発してるアプリケーションを、プロキシ対応させる必要があったので、dockerで簡単に起動できるようにDockerfileを用意してみました。 簡単にプロキシ通した接続試してみたいけど、squidの設定とか調べるの面倒😮‍💨というときにはどうぞ。

kenyog/proxy-server-for-develop (opens new window)

# できること

プロトコルは以下の4パターンに対応

接続先がhttpsの場合はCONNECTメソッドによる接続に制限しています。

プロキシの認証方式としては以下の3パターンが使えます。

  • 認証無し
  • BASIC認証
  • DIGEST認証

# 使い方

gitのリポジトリをクローンしてきて、docker-compose upでOKです。

git clone https://github.com/kenyog/proxy-server-for-develop.git
cd https://github.com/kenyog/proxy-server-for-develop.git
docker-compose build
docker-compose up -d

# ポート番号

それぞれ下表のように、ポート番号で切り分けていますので、試したいパターンによってポート番号を切り替えてください。

port プロキシプロトコル 認証
8001 http なし
8002 http BASIC
8003 http DIGEST
8011 https なし
8012 https BASIC
8013 https DIGEST

認証ありの場合のパスワードは以下で固定されています。

ユーザー パスワード
user01 pass01
user02 pass02
user03 pass03

# 証明書

プロキシサーバーのプロトコルをhttpsとする場合は証明書が必要になります。 (まぁなくても証明書チェック警告を無視すればいいのですが、開発時に試すならちゃんと用意したいですよね)

# cURLでの確認

以下のコマンドでプロキシを試せます。

  • 認証なしプロキシ on http

    curl --proxy http://192.168.x.y:8001/ https://www.example.com/
    curl --proxy http://192.168.x.y:8001/ http://www.example.com/
    
  • BASIC認証プロキシ on http

    curl --proxy http://192.168.x.y:8002/ --proxy-basic --proxy-user user01:pass01 https://www.example.com/
    curl --proxy http://192.168.x.y:8002/ --proxy-basic --proxy-user user01:pass01 http://www.example.com/
    
  • DIGEST認証プロキシ on http

    curl --proxy http://192.168.x.y:8003/ --proxy-digest --proxy-user user03:pass03 https://www.example.com/
    curl --proxy http://192.168.x.y:8003/ --proxy-digest --proxy-user user03:pass03 http://www.example.com/
    
  • 認証なしプロキシ on https

    curl --proxy https://192.168.x.y:8011/ https://www.example.com/
    curl --proxy https://192.168.x.y:8011/ http://www.example.com/
    
  • BASIC認証プロキシ on https

    curl --proxy https://192.168.x.y:8012/ --proxy-basic  --proxy-user user01:pass01 https://www.example.com/
    curl --proxy https://192.168.x.y:8012/ --proxy-basic  --proxy-user user01:pass01 http://www.example.com/
    
  • DIGEST認証プロキシ on https

    curl --proxy https://192.168.x.y:8013/ --proxy-digest --proxy-user user01:pass01 https://www.example.com/
    curl --proxy https://192.168.x.y:8013/ --proxy-digest --proxy-user user01:pass01 http://www.example.com/
    

proxyサーバーにhttpsでアクセスする場合に、証明書がオレオレ証明書の場合は、 --proxy-cacert {親証明書}で証明書を設定すれば証明書のチェックでエラーが出ずにアクセスできるはずです。 例)

  curl --proxy https://192.168.x.y:8011/ --proxy-cacert ./rootCA.crt https://www.example.com/

# おわりに

簡単にプロキシ通した接続試してみたいけど、squidの設定とか調べるの面倒😮‍💨というときにはどうぞ。
ただし、本格的なプロキシ導入のためのものではありません。あくまで開発時のテスト用としてください。