概要
自社サービスの開発中、必要にかられてGOで簡単なリバースプロキシツールを作った話を書いてみます。
前提
自社サービスの開発を、次のような構成で進めています。
- フロントエンドとバックエンド(APIなど)をパスで振り分け
-
/
の下はフロントエンド -
/api/
の下はAPI - その他にも色々・・・
-
- フロントエンドとバックエンドは、担当者もリポジトリも、動いているサーバも別
- それぞれサーバが開発環境、本番環境とテスト環境、のように複数の環境をもっている
やりたいこと
前提の環境をもって、いざ開発をしようとローカル環境を構築するとなれば、
- ローカルにnginxでリバースプロキシを立てて管理するのは面倒くさい
- ちょっとした環境の変更があると共有がいちいち面倒くさい
- フロントエンド担当者がわざわざバックエンドをcloneだのpullだの面倒くさい
- 環境間でテストするためにわざわざnginxの設定書き換えるのも面倒くさい
と、面倒くさいことばかりになりがちです。
そこで、簡単なプロキシツールを作って、
- ローカルには自分の担当するサーバ(とプロキシツール)だけが動いていればいい
- 接続先の環境を容易に切り替えられる
ようになったら便利だなァ、というのが動機です。
作ってみた
これを手軽に実現できるよう、簡単なリバースプロキシツールを作ってみました。
いちごです。美味しいですよね、いちご。
使い方
詳しい使い方は、GitHubのREADMEを御覧ください。
ここではかんたんな機能紹介まで。
愚痴 開発中のあれこれ
- この程度のツールを作るなら、Goってホント良い感じ。
- Goっていい感じ。
- 世の中にありそうなもんだけどなァ、と思ったらなかなかなかった。
- もっと賢いやり方あったら教えてほしい
- TypeScriptで頑張ってみたけど、やっぱりフロントエンド苦手。
- でもやっぱりTypeScript最高。型付き言語最高。愛してる。(異論は認めます)
- Goっていい感じ。
-
gorilla/muxとか、mux系は色々なライブラリがあるのに、もそっと柔らかいライブラリはないものなのか・・・。
-
/*
はこっち、/api/*
はあっち、とかやろうとすると、全部/*
に吸い取られる罠 -
net/http/httputil.ReverseProxy
最高!
-
- Goっていい感じ。
- Goっていい感じ。
- Gopher君ぺろぺろしたい
Thanks
ちょっとした面倒を避けて、みんなの苺が美味しくなりますように