Google認証なリバースプロクシ&静的コンテンツ配信サーバー「gate」

KibanaGrafana を使う時に、これらはjsのツールなので、 Erasticsearch や InfluxDB といったバックエンドサービスにjsからアクセスできるようにする必要がある。

そのためには、

  1. 普通にバックエンドサービスのportを開放
  2. nginxとかでリバースプロクシ

とかする必要があり、めんどくさい。

さらにセキュリティのことを考えると、2の方法のうえに、nginxでSSL+Basic認証なんかにする必要があってよりめんどくさい。

さらに、僕はBasic認証が嫌いだ。 昔は Firefox + 1Password で良い感じにBasic認証の入力が行えたが、いまはだめになってしまったし、 Basic認証だとアカウントの管理もめんどくさい。

なので、Google認証なhttpdでリバースプロクシもできる、gateというツールを作った。

https://github.com/typester/gate

バイナリのダウンロード も可能。

使い方

設定ファイルのサンプル を自分に合うように変更して、

$ gate -conf config.yml

のように起動するだけ。サンプルを見たらだいたい分かると思う。

実例

自分は / にアクセスすると、Grafanaが見えて、 /uchiwa にアクセスすると、sensuのdashboardが見えるようにしている。

その場合の設定は

htdocs: ./grafana-1.6.1

proxy:
  - path: /elasticsearch
    dest: http://127.0.0.1:9200
    strip_path: yes

  - path: /influxdb
    dest: http://127.0.0.1:8086
    strip_path: yes

  - path: /uchiwa
    dest: http://127.0.0.1:3000
    strip_path: yes

  - path: /socket.io
    dest: http://127.0.0.1:3000
    strip_path: no

こんな感じになる。[1]

/ にアクセスが来たら Grafana のファイルを配信。 /elasticsearch 以下のアクセスは elasticsearch にプロクシしてやる、みたいな感じだ。

uchiwaはwebsocketを使うのだけど、gateはこのためだけにwebsocketもproxyできるようにしたので、 こういう感じに設定しておくとうまく動く。

自分以外に需要があるかは不明だが、Grafanaやuchiwaをうまく認証付きで公開したい、 というような場合にはなかなか便利だと思う。