2016-03-28 58 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