2016-03-28 93 views
8

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

回答

10

remote_addr将引用代理,但您可以配置代理以发送带有头字段X-Real-IP/X-Forwarded-For的客户端地址。

结合ngx_http_realip模块,您可以修改传入标头以使用remote_addr的实际客户端地址。我相信这将按预期的方式使用允许/拒绝语法。

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

后端nginx的允许/拒绝:

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

后端nginx的realip配置:

set_real_ip_from <your proxy>; 
real_ip_header X-Forwarded-For; 

在您的nginx代理配置:

proxy_set_header  X-Real-IP  $remote_addr; 
proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 

如果您有多个所涉及的中间代理,您需要启用real_ip_recursive和白名单附加地址h set_real_ip_from指令。

+0

谢谢 - 您能否展示配置如何查找此内容,因为模块页面仅显示如何获取变量,但不显示如何将白名单列出。 – mahemoff

+0

我看到,它用原始IP替换了代理IP。谢谢。 – mahemoff

+1

是的。抱歉,评论乱七八糟。更新了我原来的帖子。 – ngraves