Nginx voegt gedeelde zone toe tussen HttpLimitConnModule en HttpLimitReqModule

Ik probeer verbindingen en verzoeken per IP te beperken en voeg vervolgens een whitelist toe voor zoekrobots om van deze limieten te worden uitgesloten. Dit kan gedaan worden met behulp van HttpLimitConnModule zoals ik dit heb beschreven plaatsen . als volgt

http{
     geo $notabot {
        default 1;
        #google 
        64.233.160.0/19 0;
        65.52.0.0/14 0;
        66.102.0.0/20 0;
        66.249.64.0/19 0;
        72.14.192.0/18 0;
        74.125.0.0/16 0;
        209.85.128.0/17 0;
        216.239.32.0/19 0;
        #M$
        64.4.0.0/18 0;
        157.60.0.0/16 0;
        157.54.0.0/15 0;
        157.56.0.0/14 0;
        207.46.0.0/16 0;
        207.68.192.0/20 0;
        207.68.128.0/18 0;
        #yahoo
        8.12.144.0/24 0;
        66.196.64.0/18 0;
        66.228.160.0/19 0;
        67.195.0.0/16 0;
        74.6.0.0/16 0;
        68.142.192.0/18 0;
        72.30.0.0/16 0;
        209.191.64.0/18 0;
        #My IPs
        127.0.0.1/32 0;
        123.456.0.0/28 0; #example for your server CIDR
    }
    limit_req_zone $binary_remote_addr zone=notabot:5m rate=200r/s;
    limit_req zone=notabot burst=200 nodelay;

Wanneer ik echter dezelfde zone "notabot" aan HttpLimitConnModule toevoeg als volgt

limit_conn_zone  $binary_remote_addr  zone=notabot:5m;
limit_conn_log_level notice;
limit_conn  notabot  20;

Nginx produceert configuratiefout:

nginx: [emerg] the shared memory zone "notabot" is already declared for a different use in /server/nginx.conf:116

De enige manier om dit te laten werken, is om de "notabot" -zone opnieuw toe te voegen met een andere naam. Is er een manier om een ​​zone tussen twee modules te delen?

0

1 antwoord

Nee. Ze slaan verschillende gegevens op.

1
toegevoegd