Назад | Перейти на главную страницу

Переопределение правила запрета nginx для блока, связанного с acme

У меня следующая конфигурация сервера nginx:

server {
    ...

    location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to proxy.
            try_files /maintenance.php $uri @proxyPass;
    }

    location @proxyPass {
            proxy_pass http://1.1.1.1;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    location ~ /\. {
            deny all;
    }

    include /etc/nginx/acme;

    include /etc/nginx/expires.conf;
}

/ и т.д. / nginx / acme:

location /.well-known/acme-challenge/ {
    allow myip;                           # my ip
    allow serverip;                       # server ip
    allow 66.133.109.36/32;               # allow outbound1.letsencrypt.org
    allow 64.78.149.164/32;               # allow outbound2.letsencrypt.org
    allow 64.78.149.164/32;               # allow outbound2.letsencrypt.org
    deny all;                             # deny everything else

    alias /srv/letsencrypt/acme-challenge/;
    try_files $uri =404;
}

в deny all правило для всех, начинающееся с точки, конфликтует с правилом для acme. Если я удалю его, когда смогу получить доступ к файлам в папке, связанной с acme, в противном случае я получаю 403 Forbidden

Я пытался установить allow all вместо включения IP-адресов в связанный блок местоположения acme, как это описано в: Переопределение правила запрета nginx для одного блока местоположения Но id не помогает

Как заставить эти два блока локации работать вместе?

Блоки расположения регулярных выражений, такие как правило запрета, обычно имеют приоритет над совпадениями префиксов в nginx.

Предотвратите проверку регулярного выражения и сделайте приоритет совпадения префикса, добавив ^~ к определению вашего блока:

location ^~ /.well-known/acme-challenge/ {