nginxでは同時アクセス数制限のためにlimit_connディレクティブが使用できるが、httpとhttps両方でサービスを公開している場合、コネクション数を合計でカウントするか個別でカウントするかによって設定方法が異なる。
参考:
http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html
http://nginx.org/en/docs/http/ngx_http_core_module.html
HTTPとHTTPSの合計でリクエスト数制限を行う場合
limit_conn_zoneで$request_uri
そのものをキーとするのでHTTPとHTTPSを区別せずにリクエストをカウントする。
http {
limit_conn_zone $request_uri zone=zonename:10m;
limit_conn zonename 4;
...
server {
listen 8080;
...
}
server {
listen 8443 ssl;
...
}
}
HTTPとHTTPSのそれぞれでリクエスト数制限を行う場合
HTTPとHTTPSを区別したいので、$request_uri
の手前に$scheme
を繋げた文字列をキーに設定する。
http {
limit_conn_zone ${scheme}_${request_uri} zone=zonename:10m;
...
server {
listen 8080;
limit_conn zonename 4; # 接続上限は別々の数を指定可能
...
}
server {
listen 8443 ssl;
limit_conn zonename 4;
...
}
}