リバースプロキシとは
インターネットにてリクエストをほかのサーバの代わりに受けて(代理:proxy)他のサーバへ中継してくれるサーバ
なぜわざわざNode.jsで書くのか
ふつうはNginxを使う。
今回は小規模な自分用サーバのために使うので、ほかの機能で使っているnode.js
にまとめて載せられると便利だと思い書いた。
コード
ポイント
- http-proxyを使う、プロキシもリバースプロキシもこれでできる
- http-proxyのバグでPOSTが通らないのでヘッダをいじる:https://github.com/wonderhorn/nodegate/blob/master/gate.js#L35
node.jsの仕様上jsonが壊れるケースがあるらしく、stringifyしなおす - 応用:エンドポイントによって飛ばす先を変える
これで同一サイト内の一部機能だけ別のサーバに持たせたりできる
https://github.com/wonderhorn/nodegate/blob/master/gate.js#L61
動作
中継しない例:https://wonderhorn.net/
自分のサイト・静的コンテンツを配信している
他のサーバに中継する例 https://wonderhorn.net/ipaddress
ここではCMANさんのipアドレスチェッカーに中継しているが、ipアドレスが
クライアントではなく中継サーバのものになっている点に注目
中継が成功しているということである