server {
        listen 80;
        listen [::]:80;
        listen 443 ssl;
        listen [::]:443 ssl;
        http2 on;
        server_name git.softwarelibre.mx;
        #root /srv/www/html/letsencrypt/public;

        # ssl
        ssl_certificate "/etc/letsencrypt/live/git.softwarelibre.mx/fullchain.pem";
        ssl_certificate_key "/etc/letsencrypt/live/git.softwarelibre.mx/privkey.pem";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;
        ssl_prefer_server_ciphers on;

        # include
        include include.d/letsencrypt.conf;

        location = / {
                 limit_conn   cons  5;
                 limit_req   zone=slow delay=5 ;
                 include include.d/forgejo-proxy.conf;
        }

        # Default con límite apretado para no sobrecargar de 404s al Forgejo
        location / {
                 limit_conn   cons  5;
                 limit_req   zone=crawler delay=5 burst=15 ;
                 include include.d/forgejo-proxy.conf;
        }

        location /api {
                 limit_conn   cons  3;
                 limit_req   zone=slow delay=5 burst=15 ;
                 include include.d/forgejo-proxy.conf;
        }

        # Aquí debe haber solo elementos estáticos
        location ~ ^/(assets|avatars)  {
                 limit_conn   cons  5;
                 limit_req   zone=reqs delay=5 burst=55 ;
                 include include.d/forgejo-proxy.conf;
        }

        # Rutas de consulta con un límite holgado
        location ~ ^/(issues|explore|milestones|notifications|pulls)  {
                 limit_conn   cons  3;
                 limit_req   zone=slow delay=5 burst=15 ;
                 include include.d/forgejo-proxy.conf;
        }

        # Rutas de administración con límite todavía utilizable
        location ~ ^/(admin|org|repo|user)  {
                 limit_conn   cons  3;
                 limit_req   zone=slowest delay=5 burst=15 ;
                 include include.d/forgejo-proxy.conf;
        }

        # Donde hay repos, un límite más holgado
        location ~ ^/(DBS|MxOS|SoftwareLibreMx|KBrown|imcsk8) {
                 limit_conn   cons  5;
                 limit_req   zone=slow delay=5 burst=15 ;
                 #limit_req   zone=crawler delay=5 burst=55 ;
                 #limit_conn   cons  1;
                 #limit_req   zone=crawler ;
                 include include.d/forgejo-proxy.conf;
        }

        # Aquí es donde están atacando, límite máximo
        location ~ ^/strepsirrhini {
                 #return 502;
                 limit_conn   cons  5;
                 limit_req   zone=bot delay=5 burst=55 ;
                 #limit_conn   cons  1;
                 #limit_req   zone=bot ;
                 include include.d/forgejo-proxy.conf;
        }

}

