Nginx permite o arquivo PHP apenas para alguns IPs

1

Estou usando as seguintes instruções para bloquear a execução de vários tipos de arquivo

location ~* (\.php$|\.htaccess$|\.git) {
    deny all;
}

Como posso permitir a execução de apenas um script PHP para algum endereço IP específico?

Eu tentei o seguinte para permitir a execução de um script PHP, mas não está funcionando ..

location ~ ^adminer.php {                                        
    fastcgi_pass   php-fpm:9000;  
    fastcgi_index  adminer.php;              
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;          
    fastcgi_param  PHP_VALUE        "error_log=/var/log/nginx/application_php_errors.log";
    include  fastcgi_params;                       
}
    
por Luigi T. 12.06.2017 / 08:29

2 respostas

4

Para bloquear usuários com base em ip, use as instruções "permitir negação", conforme descrito em ngx_http_access_module Então você pode adicionar uma regra para pegar todas, se precisar.

location ~* phpinfo.php {                                        
    fastcgi_pass   127.0.0.1:9000;  
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;          
    include  fastcgi_params;                       
    allow your.exact.i.p/32;
    deny all;
}

location ~* \.(?:php|htaccess|git)$ {
    deny all;
}
    
por 12.06.2017 / 10:32
1

Use location = /path/to/adminer.php como seu bloco de localização. A correspondência = é a prioridade mais alta no nginx e outros blocos location não são correspondidos depois disso.

Em sua configuração, é mais provável que a ordem dos seus blocos location e correspondências sobrepostas o impeçam de funcionar.

    
por 12.06.2017 / 09:35