LoginSignup
6
5

More than 5 years have passed since last update.

EC2から内部に立てたリバースプロキシを通って外のAPIにアクセスする方法

Last updated at Posted at 2016-03-28

用件

  • 他社のAPIを叩く時にIP制限をかけられる事がままあるので、固定IPにしたい
  • EC2にはEIPという固定IPが存在するが、WEBサーバーの特性上サーバーの台数が不変ではないため、EIPを先方のファイアウォールに設定するのは好ましくはない
  • WEBサーバー全台にEIPを付けていたらきりがない
  • AWSにはNATインスタンスが用意されているが、全てのトラフィックをそこに向けるのは冗長性を壊す事になるし、トラフィックのボトルネックにもなりうる
  • トラフィックを受けながらNATインスタンスに切り替えるのが結構大変
  • 特定のドメインへのアクセスだけ、特定のサーバーを通る様な仕組みにしたい

どうするか

内部にリバースプロキシを立てて、特定のドメインは一度そのリバプロを通過するようにする。
その為に、最初はリバプロを向いているlocalドメインにアクセスし、publicドメインにリダイレクトするように設定する。

構成

Untitled (2).png

API名

本来アクセスしたいAPIのドメインを api.example.com
Proxyに向いているドメインを api.example.local
とする

各要素

WEB Servers

各WEBサーバーは、api.example.localにアクセスする

Reverse Proxy

api.example.localにきたアクセスを、api.example.comに変更する。
nginxの場合は以下のような設定になる。

server {
  listen 80;
  server_name api.example.local;
  location / {
    proxy_pass http://api.example.com;
  }
}

proxy_set_headerはセットしないように注意。

DNS

.local系のドメインはinternalなDNSがあればそこに設定しても良いし(Route53なら作成可能)、/etc/hostsに書いておいても良い。

まとめ

という事で結構簡単に完成。
リバースプロキシは、internal ELBを使って2台以上にしておくと吉。

6
5
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
6
5