簡體   English   中英

Nginx 位置塊訪問列表和“X-Forwarded-For”

[英]Nginx Location Block Access List and 'X-Forwarded-For'

我在負載平衡的 Nginx 集群上有幾個 wordpress 站點。 我希望在這些上阻止對 /wp-admin 和 /wp-login.php 的訪問。 客戶不願意使用 Wordfence 等插件來實現這一點(可以理解)。

負載均衡器在 X-Forwarded-For 中轉發真實客戶端 IP,這在 Nginx 中存在,因為我目前在我的主要日志格式中使用它"$http_x_forwarded_for"

這是我當前的位置塊:

   location ~ ^/(wp-admin|wp-login.php) {

     real_ip_header X-Forwarded-For;

     try_files $uri $uri/ /index.php?$args;
     index index.html index.htm index.php;

     root           /var/www/vhosts/domain.com/html;
     fastcgi_pass   127.0.0.1:9000;
     fastcgi_index  index.php;
     fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
     include        fastcgi_params;

     allow 1.1.1.1;
     allow 2.2.2.2;
     allow 3.3.3.3;
     #allow 10.10.85.0/24;
     deny all;
   }

如您所見,我使用“real_ip_header X-Forwarded-For;” 聲明真正的ip應該是什么。 但這不起作用。 有了上述內容,所有對那里的請求都會被阻止。 如果我取消注釋私有10.10.85.0/24子網(這是從負載均衡器傳送流量的私有網絡),那么每個人都可以訪問這些位置。

我確實在 Nginx 中編譯了 realip 模塊,如下所示:

[root@STR-MAI-ORDS1 conf.d]# 2>&1 nginx -V | tr -- - '\n' | grep http_realip_module
http_realip_module
[root@STR-MAI-ORDS1 conf.d]#

在我的日志文件中,我可以看到通過使用 X-Forwarded-For 打印的真實公共 IP 進行日志記錄,但同樣不適用於此位置塊 realip,我不知道為什么。

如果重要的話,環境看起來像這樣:

  • pfSense 固件(2 節點 HA)
  • Zevenet 負載均衡器(2 節點 HA)
  • CentOS 6.x Web 服務器(3 節點集群)

網絡堆棧是:

  • Nginx v1.12.0
  • PHP-FPM v7.0.20 (fastcgi)

關於我做錯了什么的任何建議都會很棒。 謝謝。

原來 Nginx 中的“set_real_ip_from”不是可選的......即使我正確地將“real_ip_header”設置為“X-Forwarded-For form the LoadBalancers,Nginx 完全拒絕這樣做,因為它沒有(默認情況下)信任LB作為可以設置真實IP的來源。

解決方法是在我的位置塊中包含以下內容:

set_real_ip_from 10.10.85.0/24;
real_ip_header X-Forwarded-For;

然后 Nginx 信任 LB(位於該子網內)並將真實 IP 設置為該 LB。

您可以為多個阻塞創建一個配置文件,如下所示。

修改 ngnix 配置文件

vi /usr/local/nginx/conf/nginx.conf

在 nginx.conf 中包含用於阻止 IP 的新配置文件

include blockips.conf;

保存 ngnix 配置文件並創建新文件

vi blockips.conf

添加列入黑名單的 IP

deny 1.2.3.4;

或子網阻塞

deny 91.212.45.0/24;

有關更多信息,請參閱nginx 阻塞 IP子網

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM