当使用 Amazon ELB 或其他代理时,如何拒绝源 IP 的访问

当使用 Amazon ELB 或其他代理时,如何拒绝源 IP 的访问

Nginx 有一个很好的功能,可以让你通过源 IP 地址限制对资源的访问。

但是,我注意到,如果 nginx 位于代理或负载均衡器后面,则可能不起作用。在我的例子中是 Amazon ELB。

我想为 datadog 代理和 Amazon ELB 健康检查提供状态页面。因此我想允许本地连接和来自 ELB 的连接,但拒绝其他所有连接。

以下内容无法按预期工作,因为它允许来自 ELB 外部的流量也访问状态页面。原因是 IP 似乎来自 ELB,而允许规则不会查看标头来确定请求的真实来源。有没有办法告诉 nginx 使用哪个源 IP 来确定允许/拒绝规则?

location /status {
    stub_status;
    access_log off;
    allow 127.0.0.1;
    allow 10.0.0.0/16;
    deny all;
}

答案1

正如 Michael Hampton 指出的那样。我可以使用 Real IP 模块。我之前不知道这个。

以下操作有效。

http { 
    real_ip_header X-Forwarded-For;
    set_real_ip_from 0.0.0.0/0;
}

相关内容