Restringindo vários diretórios aos mesmos intervalos de IP

3

Suponha que eu tenha o seguinte em um arquivo de configuração nginx:

location ^~ /foo/ {
    allow 1.2.3.4;
    allow 5.6.7.8;
    allow 9.10.11.12;
    …
    allow 99.100.101.102;
    deny all;
    # rest of directives
}

Se eu também quiser restringir o acesso a vários outros diretórios, é possível fazer isso sem ter que criar outro bloco e listar os IPs novamente? Minha preocupação é fazer alterações quando os IPs são adicionados e removidos no futuro - eu não gostaria de ter certeza de que cada bloco foi atualizado.

Melhor ainda seria uma diretiva que basicamente me permite "incluir" a lista de IPs sob cada bloco de alguma forma.

    
por Jordan Reiter 09.07.2014 / 18:31

1 resposta

5

Assim que digitei a palavra "incluir" na pergunta acima, as rodas começaram a girar na minha cabeça.

Acontece que você pode simplesmente colocar as diretivas allow e deny em um arquivo de inclusão e elas funcionarão como esperado. O melhor de tudo, isso significa que posso combinar listas de IPs para que certos grupos de servidores possam acessar alguns diretórios, enquanto outros não podem.

Eu configurei assim:

/ etc / nginx / includes / admin-ips

allow 1.2.3.4/32;
allow 1.2.3.5/32;

/ etc / nginx / includes / private-ips

allow 10.0.0.0/8;
allow 172.16.0.0/12;
allow 192.168.0.0/16;

/ etc / nginx / includes / testing-ips

allow 4.5.6.7;
allow 8.9.10.11;

/etc/nginx/conf.d/server.conf

location ^~ /admin/ {
    include includes/admin-ips;
    deny all;
    # rest of directives
}

location ^~ /tools/ {
    include includes/admin-ips;
    include includes/testing-ips;
    include includes/private-ips;
    deny all;
    # rest of directives
}

location ^~ /tests/ {
    include includes/admin-ips;
    include includes/testing-ips;
    deny all;
    # rest of directives
}

Funciona como um encanto.

    
por 09.07.2014 / 18:51