Substituindo regra de negação de nginx para bloco relacionado a acme

1

Tenho a seguinte configuração do servidor 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;
}

/ etc / 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;
}

a regra deny all para todos os que começam no ponto conflita com a regra do acme. Se eu removê-lo quando eu for capaz de acessar arquivos em uma pasta relacionada a acme, caso contrário, eu estou recebendo 403 Proibido

Eu tentei definir allow all em vez de alistar endereços IP em um bloco de localização relacionado a acme, como descrito em: Anulando a regra de negação do nginx para um único local de bloqueio Mas id não ajuda

Como fazer esses dois blocos de localização funcionarem juntos?

    
por Index 12.10.2018 / 16:53

1 resposta

2

Blocos de localização de expressão regular, como sua regra de negação, normalmente têm precedência sobre correspondências de prefixo no nginx.

Impeça a verificação de regex e tenha prioridade na correspondência de prefixo adicionando ^~ à sua definição de bloco:

location ^~ /.well-known/acme-challenge/ {
    
por 12.10.2018 / 17:04