Eu tenho um problema no Nginx com segurança e X-Accel-Redirect
.
Servidor Nginx 777
location /api {
allow 100.100.100.1;
deny all;
proxy_pass http://api-server;
}
#The api-sever will respond with an `X-Accel-Redirect` header to the following location `@server888`
location @server888 {
internal;
proxy_pass http://server888$request_uri;
}
Nginx Server 888 tem configuração idêntica para/api
location /api {
allow 100.100.100.1;
deny all;
proxy_pass http://api-server;
}
No entanto, todas as solicitações do ip de origem 100.100.100.1
para o servidor 777 estão obtendo uma resposta 403 do servidor 777 , com o erro:
access forbidden by rule while reading response header from upstream
Pelo que vejo, o @server888
local está bloqueando a solicitação, mas meu entendimento é que a internal
diretiva deve permitir solicitações originadas de X-Accel-Redirect
, sem precisar fornecer uma allow
diretiva explícita para 100.100.100.1
.
Isso está correto? Ou preciso conceder permissões mais extensas no @server888
local para que isso funcione?
Portanto, parece que o personalizado
location
(@ server888) precisa permitir o endereço de loopback para que isso funcione:Não sei qual é a explicação técnica aqui.
Normalmente, a
internal
diretiva deve permitir o acesso quando a solicitação é gerada porX-Accel-Redirect
:http://nginx.org/en/docs/http/ngx_http_core_module.html#internal
Meu palpite aqui é que isso só se aplica quando o
location
é local, em vez de um proxy reverso para um upstream, ou que esse local está herdando um mais globaldeny all;
anteriormente na configuração.