Nginx-允许源IP
Nginx支持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的客户端地址 与模块结合使用,您可以修改传入标头,以使用远程地址的实际客户端地址。我相信这将在允许/拒绝语法中正常工作 只是澄清一下——启用和配置模块后,允许/拒绝语法
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
}
}