Quando a regra de negação do NGINX é aplicada?

1

Eu tenho server 80 , que contém as diretivas return e allow/deny :

...
server {

    server_name    dev.monitor.domain.ms;
    listen         80;

    allow 194.***.45;
    allow 37.***.130;
    deny  all;

    return 301 https://dev.monitor.domain.ms$request_uri;
}
...

e outro server com listen 443 .

Então a questão aqui é - por que return 301 funciona aqui mesmo para IP que não permite acesso?

Finalmente - eu realmente não consigo me conectar, então allow/deny funciona, mas ...

Exemplo:

$ curl -vL dev.monitor.domain.ms
* About to connect() to dev.monitor.domain.ms port 80 (#0)
...
< HTTP/1.1 301 Moved Permanently
 ...
< Location: https://dev.monitor.domain.ms/
...
* Issue another request to this URL: 'https://dev.monitor.domain.ms/'                                                                                                                                                                            
* About to connect() to dev.monitor.domain.ms port 443 (#1)                                                                                                                                                                                      
*   Trying 40.***.***.237... Connection timed out                                                                                                                                                                                              
* couldn't connect to host                                                                                                                                                                                                                    
* Closing connection #1                                                                                                                                                                                                                       
curl: (7) couldn't connect to host

O mesmo se adicionar allow/deny a http {} block. Então - quando e onde essas restrições são verificadas?

A documentação do ngx_http_access_module não menciona nada sobre isso.

    
por setevoy 26.09.2017 / 14:45

1 resposta

0

deny no Nginx é aplicado a todos os locais correspondentes.
Como você não tem nenhum local definido, ele não é aplicado.

Tente colocar o redirecionamento em um local:

location / {
    return 301 https://dev.monitor.domain.ms$request_uri;
}

Mas cuidado, pois isso não fornecerá segurança em relação ao host direcionado para.
Você ainda precisará verificar as permissões no host HTTPS.

    
por 26.09.2017 / 16:39

Tags