国別にアクセスを振り分けたい
Last-modified: Sun, 31 Dec 2017 21:33:12 JST (2159d)
Top > 国別にアクセスを振り分けたい
サーバへのアクセスを国別で分けたいことがあります。
やり方としてはIP割当先を調べて、.htaccessなどで振り分けるなどがありますが、IPの割り当ては適宜変わるので、都度メンテナンスをする必要があります。
ここでは、Route53のGeolocation Routing機能を使って、国別に返すレコードを変えることで振り分けます。
勿論IPの割り当てをベースとしているので完全ではない点に注意です。
(そもそも場所とIPは対になっていないし)
また、DNSベースですので、どこぞのキャッシュDNSがIPをキャッシュしたり、hostsに書かれていたりすると無力です。
それでは、ここでは、中国からのアクセスのみS3上にホストしたページを返し、それ以外はサーバのレコードを返す設定をします。
- ドメインは別途取得済みでDNSはRoute53を参照している設定済みとします。
デフォルトレコードの作成
- Route53のGeolocation Routingを使用するには、まずデフォルトのレコードを作成する必要があります。
Create Record Setをクリックします。 - まずは動作確認のため、普通にAレコードを設定します。
- 見ることができました。
- 次に、先ほど設定したレコードを選択し、下のほうにあるRouting PolicyからGeolocationを選択。LocationにDefaultを選択し、SIDに適当な名前をセットします。
- 次に中国用レコードを作成します。ここでは、S3バケットで静的コンテンツを配信したいを参照し、先ほどと同じホスト名の公開バケット作成済みとします。
Route53の画面よりAliasにチェックを入れます。すると、Alias Targetから先ほどのS3がプルダウンで出てきますので選択します。
ここで出てこない場合、S3が正しく設定されていません。
勿論別サーバへ飛ばしたい場合はS3ではなくIP指定でも構いません。 - 下のほうへスクロールすると、Routing Policyとあるので、Geolocationを選択。LocationにChinaを指定し、SIDに適当な名前をセットします。
- これで、中国用レコードが作成されます。
注意点として、必ず先にデフォルトレコードを作成しないと、DNSレコードが重複しているエラーが出て作成できません。 - 最後に動作テストをします。実際に中国のIPからアクセスできれば確実なのですが、そうもいかないので、Route53のテスト機能を使います。
Test Record Setをクリックします。 - Typeに先ほど作成したAレコードを選択。ResolverIPaddressに適当な中国のIPを入れますと、S3のIPが返ってくることがわかります。
- では中国以外のIPを入れると、ちゃんとサーバのIPが返ってくることが確認できます。
Counter: 520,
today: 1,
yesterday: 0
このページの参照回数は、520です。