У меня следующая конфигурация сервера 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/ {