HerokuでIP制限
HerokuにてRailsアプリケーションを公開したは良いのですが、海外からのアクセスが多すぎてdynoが耐えきれず response timeout が大量発生してしまいました。 そこで今回はdynoに負荷をかけずに海外からのアクセス制限をした方法について書きます。
はじめに
HerokuではWebサーバーなどの設定が細かくできないため、プロジェクト内に設定ファイルを書いてIP制限を行うということができません。 またRailsアプリで
などのgemを使うことで、IP制限を行うことができるのですがdynoへの負荷やアプリのパフォーマンス低下(上記だとRack::Attack.callが大量に呼ばれる)へと繋がるため、あまり良い選択ではないと思いました。 理想は許可したIPのみdynoへアクセスさせたいので、ネットワークでうまくできないかと調べたところCloudFlareを使えばうまくできそうだということがわかりました。
以下CloudFlareでの設定方法を説明します
CloudFlare
まずはCloudFlareで会員登録
次に登録したいサイトを入力します
60秒ほど待つとCNAMEのvalueが解析されるのでContinueを押します
そしてCloudFlareのネームサーバーの値が表示されるので、これを使用しているドメインに設定します。
ちなみにお名前ドットコムでは下記を編集します。
だいたい登録して1,2hで反映されましたが長いときには1日かかるときもあるそうです。
CloudFlareでのIP制限
CloudFlareでIP制限を行うためにはFirewallの設定を行います。 CloudFlare Firewallでは
- Cookie
- AS Num
- Country
- Host Name
- IP Adress
- Referer
- Request Method etc
などのフィールドを元に制限ができ非常に便利です。 今回は日本以外のアクセスを制限したかったため下記のように書きました。
普通国外を制限する場合は日本のIPアドレスすべて書き込む必要があるのですが、CloudFlareではたったこれだけで制限ができるので非常に便利ですね。
また国外にてどう表示されているかを確認する際は下記のchrome拡張を使うとスムーズに確認できます。
実際にサイトを見てみると
正常に制限されていることがわかりますね。
CloudFlareは今までCDNなどに用いるイメージがありましたが、無料で且つ簡単にIP制限ができるなんて素晴らしいサービスですね!
現場で使える Ruby on Rails 5速習実践ガイド(特典PDF付き)
- 作者: 大場寧子,松本拓也,櫻井達生,小田井優,大塚隆弘,依光奏江,銭神裕宜,小芝美由紀
- 出版社/メーカー: マイナビ出版
- 発売日: 2018/10/19
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
Ruby on Rails 5アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2017/04/14
- メディア: 大型本
- この商品を含むブログを見る
プロフェッショナルのための 実践Heroku入門 プラットフォーム・クラウドを活用したアプリケーション開発と運用 (書籍)
- 作者: 相澤歩,arton,鳥井雪,織田敬子
- 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
- 発売日: 2014/09/19
- メディア: 大型本
- この商品を含むブログ (3件) を見る