1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2020-08-31

はじめに

FortigateのSSL-VPNのWebモード接続の仕組みを見て、ふとNginxでこれを再現すれば社内Webサーバアクセス時の踏み台として便利に使えるのではと思い立ち、実装してみました。
丁度ISUCONでNginxをいじっていて、ある程度知見がたまってきたところだったということもあっての閃きでした。

なにがしたいのか

複数のWebサーバにアクセスしなければならないがWebブラウザからの経路(ポート番号含む)は一本に絞りたい。と考え、リバースプロキシに一旦集約したかったのです。

この手の役割は通常、フォワードプロキシに任せるのが一般的だと思いますが、クライアントPCには社内からInternetに抜けるために別のプロキシサーバを既に設定していましたし、クライアントPCにはなにも設定せず扱えるような便利な仕組みを作りたかったのです。

メリット

  • Nginxを立てたサーバにさえアクセスできるようにすれば、そのサーバからアクセスできる場所へなら簡単にWebアクセスできます。

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番ポートに建て、
Nginxがあるサーバからはhttp://X.X.X.X:XXXX/hogehoge にアクセス可能であるとします。

ブラウザで以下のようにURLを指定します。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?