4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

この記事誰得? 私しか得しないニッチな技術で記事投稿!

nginxのコネクション数制限(limit_conn)で複数プロトコルに対応する

Posted at

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;
        ...
    }
}
4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?