30
解説
のアスのする方するこの
ズ に 合 て 応 で き ま す 。同 じ 方 GeoIPジュールきる
またブロッするきま
3.4ント
問題
NGINXサーバの前にプロキシがあるため、ジナクライアンIPレス
ります。
解決
geoip_proxy 使 用して IPレス geoip_
proxy_recursiveィレ IP使 す。
load_module "/usr/lib64/nginx/modules/ngx_http_geoip_module.so";
http {
geoip_country /etc/nginx/geoip/GeoIP.dat;
geoip_city /etc/nginx/geoip/GeoLiteCity.dat;
geoip_proxy 10.0.16.0/26;
geoip_proxy_recursive on;
# ...
}
geoip_proxyィレ
ィン
(CIDR) 義し
ますこのでプロキシサーバーはX-Forwarded-For して
ントIPアドレス NGINX す。geoip_proxy_recursive
レクブはの既知のクイアIPX-Forwarded-For 帰的に調
うにNGINX す。
送されたッダー
Forwardedついたダーはキシされ求のプロキシ
ヘッりま NGINX GeoIPュール使
ヘッ X-Forwarded-Forで記に指定すはでません。
X-Forwarded-For あ り ん が 、広 使 用 さ 、認 め ら
のプロキシによ定されている形です
| 3 :ト ッ ク
31
解説
NGINX 前 で 使 用して NGINXはクライアンロキ
IPドレスをすることがありこのgeoip_proxy 使 用してNGINX
に特定の囲から始された場合には、X-Forwarded-Forヘッ 使
す。geoip_proxyィレ レスCIDR囲を
ります。NGINXの前にを渡ロキシがある場合、geoip_proxy_
recursiveィレ 使 用してX-Forwarded-For ス を 再 索 し 、発
クライアントを見つけることができますNGINXの前でAmazon Web Services Elastic
Load Balancing (AWS ELB)、Googleのローバラサー、たはMicrosoft Azureのロ
バランーなするしたディティブの使めしま
3.5 接続制限
問題
ライアントのIPアドレスなどのて、 する
ります。
解決
トリクスをする有メモリーゾー
limit_conn デ ィ ク テ ィ ブ を 使 用 し 、接 し ま す
http {
limit_conn_zone $binary_remote_addr zone=limitbyaddr:10m;
limit_conn_status 429;
# ...
server {
# ...
limit_conn limitbyaddr 40;
# ...
}
}
よりlimitbyaddrと い う モ リ ー ゾ ー 。使
れる事義されたキーバイナリのクライアントのIP ド レ 。共 有 メ モ リ ー
ーン 10MB す。limit_connィレ 2ラメー
使 用す: limit_conn_zone す。limit_conn_status
ステ429で 接 が 制 さ れ い る 時「 too many requests」と
す。limit_connlimit_conn_statusィレ ィブ HTTP、サ
トで す。
3.5 接続制限 |
32
解説
キー基づくからのやすべてライアント間平なリ
有目的使とができます義されたキーには意を払
が重要で前述の例のIP ス を 使 す る と 、同 じ IPから発信さ
じネワークに多くのユーザーがいるに危険にな可能があますこれ
にはNetwork Address Translation (NAT)の背後に多数のユザーがいる場合などが
す。 ント す。limit_conn_zoneィレ
ィブHTTPコンに使 する文するた
に、HTTP キストNGINX使用可能な任の数の変数を利用で
セッョンcookieど、ションレユーきるする
ースース ーン
limit_conn_statusフォルト503サービスですービス
であるた429の使用が好れるかもしれん。500ーバー
エラ400はクライアンラー示すためです
テスト スト
のトラフィミュレートする 難し す。
合、limit_req_dry_runデ ィ レ ィ ブ に し 、ア ク グ の $limit_
req_status 使 す。limit_req_status数は PASSEDDELAYEDREJECTEDDELAYED_
DRY_RUNREJECTED_DRY_RUNいず択しますラインを有にすると、ライ
ブトラフィクの 調す。
れで、 正しことをることきます。
3.6ート
問題
ントIPなど義されたキーによクエストのトを
ります。
解決
ート ュー 用して、ストート
http {
limit_req_zone $binary_remote_addr
zone=limitbyaddr:10m rate=3r/s;
limit_req_status 429;
# ...
server {
# ...
limit_req zone=limitbyaddr;
# ...
}
}
| 3 :ト ッ ク
33
このlimitbyaddrう名前有メモリゾーンを成します使用さ
れる事義されたキーバイナリクライアントのIPア ド ス で す 。共 有 メ
ーン 10MBれていますゾーード引使用し
ート す。limit_reqクティのキワード引を取ります
zonezone使する有メモリ要ゾーにディクティブ示します
えるlimit_req_status レクテで定義されている429HTTP
す 。デ ォ ル 503であるためテータ400ベルの範囲に設
することをおしまにはクラトにサー
バーるよう唆します
limit_reqディクティオプショワード引使用し2 ート
す。
server {
location / {
limit_req zone=limitbyaddr burst=12 delay=9;
}
}
によてはクラう必あり、後、さらに
要求を行う前に一定レートを下げまキーワ引数burst 使 て 、ク
ることすることきま
ート ート よう
ますーワド引トはこの更しますdelaynodelay
す。nodelayは引数は値をませがバ可能な値を一度に
できるよにしますたす過するまで、
。こ nodelay使用した場にはライアントは1
間に12の要求を消費できすが、別の要求を行うには、初めの要求から4つ必要が
す。delayード引ロッなしに作きる義し
す 。こ 、ク ン ト 9つの要求を前行うとができ、
次の3つは制され4 す。
解説
レート制限モルは、べて人に質の高いサーを提しながら正で急
な要求から護すために非常に力です要求のレーを制限する理由はたんあ
、そ 1つがセキログージに非常に厳い制限を設け
ルーォース攻撃を拒否でべての要求に適限を設
ョン生さたり、リソースを費したりようとする
のあるユーザーにすとができまト制限モジ
レシピ 3.5明した接限モジルとておりその多くがこ
まります。1たりの数ま1 ート
す。ート ントす。 使
ディティブありlimit_req_log_levelトでerrorりま
3.6 ート |
34
が、infonoticewarn もでNGINX Plus 、レ ー ト
ラスタ上 (ゾーこちらレシピ 12.5)。
テスト スト
のトラフィミュレートする 難し す。
合、limit_conn_dry_run レクテクセスログの中で$limit_
conn_status使 す。$limit_conn_status数はPASSEDREJECTEDREJECTED_DRY_RUN
のいずれ択しラインをにすると、ライックのログ
する前調きますれで、正しい
ことをことす。
3.7 帯域幅 制
問題
クラトごとのアセッウンするあります
解決
NGINXlimit_ratelimit_rate_afterクテ使用しライアンへの
応答の帯域幅を制限
location /download/ {
limit_rate_after 10m;
limit_rate 1m;
}
このションブロックのプレックスdownloadURI 、応
ント 10MB以降、1MB /の速度に制限される
帯域幅の制限は接続ごあるため、要に応続の制
す。
解説
すると、NGINXした方ですのクライアン
でアロードの帯を共るようにしますこれら2 ィレィブ
す:limit_rate_afterおよびlimit_ratelimit_rate_afterィレ
設 定 す:HTTPserverlocationしてiflocation内にある場
にはif使 す。limit_rateィレ limit_rate_after同じコン
ストで $limit_rate す。
| 3 :ト ッ ク
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.137.187.233