使用 X-Accel-Redirect 时 Nginx 403 访问被禁止

使用 X-Accel-Redirect 时 Nginx 403 访问被禁止

我在 Nginx 中遇到了安全性问题X-Accel-Redirect

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 服务器 888具有相同的配置/api

location /api {
   allow 100.100.100.1;
   deny all;
   proxy_pass http://api-server;
}

但是,所有来自源 IP100.100.100.1服务器 777收到来自服务器 777,错误如下:

access forbidden by rule while reading response header from upstream

据我所知,该@server888位置正在阻止请求,但我的理解是该internal指令应该允许来自的请求X-Accel-Redirect,而不必为提供明确的allow指令100.100.100.1

这是正确的吗?还是我需要在该@server888位置授予更广泛的权限才能使其正常工作?

答案1

因此,看起来自定义location(@server888)需要允许环回地址才能使其正常工作:

location @server888 {
   allow 127.0.0.1;
   internal;
   proxy_pass http://server888$request_uri;
}

我不确定这里的技术解释是什么。

通常情况下,internal当请求由以下方式生成时,该指令应该允许访问X-Accel-Redirect

http://nginx.org/en/docs/http/ngx_http_core_module.html#internal

我的猜测是,这仅适用于location本地情况,而不是上游的反向代理,或者该位置deny all;在配置中继承了更全局的情况。

相关内容