元の構成:
http { ......
limit_conn_zone $binary_remote_addr zone=one:10m; limit_req_zone $binary_remote_addr zone=fifa:10m rate=5r/s;
...... server { ...... limit_conn one 5; limit_req zone=fifa burst=100; ...... }}
ホワイトリスト構成:
http { ......
geo $whiteiplist { default 1; 127.0.0.1 0; 10.10.0.0/24 0; } map $whiteiplist $limit { 1 $binary_remote_addr; 0 ""; } limit_conn_zone $limit zone=one:10m; limit_req_zone $limit zone=fifa:10m rate=5r/s;
...... server { ...... limit_conn one 5; limit_req zone=fifa burst=100; ...... }}
説明:
geo ディレクティブはホワイトリスト $whiteiplist を定義します。デフォルト値は 1 で、すべてが制限されます。クライアント IP がホワイトリストにリストされている IP と一致する場合、$whiteiplist 値は 0 となり、制限されないことを意味します。
map コマンドは、$whiteiplist 値を、制限付き IP である 1 にクライアント IP にマッピングします。ホワイトリスト IP である $whiteiplist 値 0 を空の文字列にマップします。
limit_conn_zone および limit_req_zone 命令は、null 値を持つキーでは無視されるため、リストされた IP に制限はありません。
以上がgeoモジュールを介してNginxでホワイトリストを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。