LoginSignup
1
0

NginxをWebアクセスの踏み台にする。(クライアントが任意に接続先を指定できるリバースプロキシサーバを立てる)

Last updated at Posted at 2020-08-31

#はじめに
以前ISUCONでNginxをいじっていたところ、リバースプロキシ機能を踏み台として扱えば便利に使えるのではと思い立ち、実装してみました。

なにがしたいのか

とあるローカル環境にアクセスできる踏み台サーバXがあるとして、そのサーバXにブラウザアクセスすればそのローカル環境の各WEBサーバにアクセスできるようにしたい。
通常、この手の役割はプロキシサーバに任せるのが一般的だと思いますが、クライアントPCには社内からInternetに抜けるために別のプロキシサーバを既に設定していましたし、クライアントPCにはなにも設定せず扱えるような便利な仕組みを作りたかった。

メリット

  • Nginxを立てたサーバにさえアクセスできるようにすれば、そのサーバからアクセスできる場所へなら簡単にWebアクセスできます。
  • NginxにSSLを持たせることができます。
    • クライアント-踏み台間がSSL化され、多少安全になります。(やるならBasic認証も入れたいところ。)
  • 逆にNginxにSSLでの暗号化を解除させたりすることができます。
    • クライアント-踏み台間のSSLじゃなくなることで、SSLしか受け付けないWEBサービスとの通信をパケットキャプチャで検証しやすくなる。テスト環境におすすめ。
      (下記で紹介するのはセキュリティを気にする必要のない環境で検証したのでSSLを解除する例になります)

Config

server {

    ...

    location ~^/http/(.*)$ {
        proxy_pass http://$1$is_args$args ;
        proxy_http_version 1.1 ;
    }
    location ~^/https/(.*)$ {
        proxy_pass https://$1$is_args$args ;
        proxy_http_version 1.1 ;
    }
}

使用例

Nginxをexample.comの8888番ポートに建て、
そこからhttp://X.X.X.X:XXXX/hogehoge にアクセスできるものとします。

ブラウザで以下にアクセス。

http://example.com:8888/http/X.X.X.X:XXXX/hogehoge

HTTP over TLSなら、

http://example.com:8888/https/X.X.X.X:XXXX/hogehoge

最後に

意外と便利です。
少し冗長な書き方な気がしますが、とりあえず動作確認をしたところまで。
他にもいい方法があったら教えてください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0