Nginx-允许源IP

Nginx-允许源IP,nginx,proxy,whitelist,Nginx,Proxy,Whitelist,Nginx支持allow和deny语法来限制ip,例如allow 192.168.1.1。但是如果流量通过反向代理,IP将引用代理的IP。那么,如何将其配置为将特定的源IP列入白名单并拒绝所有其他传入请求呢?remote\u addr将引用代理,但您可以将代理配置为发送带有标题字段X-Real-IP/X-Forwarded-For的客户端地址 与模块结合使用,您可以修改传入标头,以使用远程地址的实际客户端地址。我相信这将在允许/拒绝语法中正常工作 只是澄清一下——启用和配置模块后,允许/拒绝语法

Nginx支持
allow
deny
语法来限制ip,例如
allow 192.168.1.1。但是如果流量通过反向代理,IP将引用代理的IP。那么,如何将其配置为将特定的源IP列入白名单并拒绝所有其他传入请求呢?

remote\u addr将引用代理,但您可以将代理配置为发送带有标题字段X-Real-IP/X-Forwarded-For的客户端地址

与模块结合使用,您可以修改传入标头,以使用远程地址的实际客户端地址。我相信这将在允许/拒绝语法中正常工作

只是澄清一下——启用和配置模块后,允许/拒绝语法应该相同。在下面替换您的IP和代理地址

后端nginx允许/拒绝:

location / {
    allow <your ip>;
    allow 127.0.0.1;
    deny  all;
}

如果您涉及多个中间代理,则需要使用set_real_ip_from指令启用real_ip_递归和白名单附加地址。

我使用
http\u geo
模块通过以下配置获得了它:

geo $remote_addr $give_access {
    proxy 172.0.0.0/8; # <-- Private IP range here
    default 0;
    11.22.33.44 1; # <-- Allowed IP here
}


server {

    # more config ... 

    location ^~ /secure_url_here {
        if ($give_access = 0) {
          return 403; 
        }
        try_files $uri $uri/ /index.php?$args; # <-- Your directive here
    }
}
geo$remote\u addr$give\u access{

proxy 172.0.0.0/8;#谢谢-你能展示一下配置如何处理这个问题吗,因为模块页面只显示了如何获取变量,但没有显示如何白名单。我明白了,它用源IP替换了代理IP。谢谢。是的。很抱歉评论这么乱。更新了我的原始帖子。
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
geo $remote_addr $give_access {
    proxy 172.0.0.0/8; # <-- Private IP range here
    default 0;
    11.22.33.44 1; # <-- Allowed IP here
}


server {

    # more config ... 

    location ^~ /secure_url_here {
        if ($give_access = 0) {
          return 403; 
        }
        try_files $uri $uri/ /index.php?$args; # <-- Your directive here
    }
}