2016-08-27 8 views
0

nginxを使用すると、範囲とips(https://www.nginx.com/resources/admin-guide/restricting-access/)を許可および拒否できます。 realipモジュールを使用すると、輻輳発生後に実際のIPに使用するIPを変更できます。 (http://nginx.org/en/docs/http/ngx_http_realip_module.html

ここでは、CloudflareまたはlocalhostではないIPをブラックリストに追加したいと思います。これはむしろ難しいことですが、私はreal_ipモジュールの設定と葉巻を設定する前にそれを置こうとしました。

これはまったく可能ですか?ユーザーがクラウドフレアを通過していなければ、それは欠陥のようだが、それは特定の仮想ホストに対してより多くの濫用を許す。

$ realip_remote_addr変数がありますが、私の人生の間、通常の$ remote_addrの代わりに許可/拒否を使用する方法を見つけることができません。

編集:ファイアウォールが私の注意を喚起してくれました。残念なことに、私はほんの少しの幻のためにこれを必要とします。

答えて

0

このような単純さは素晴らしいことを可能にします。

を使用するのが賢明です。 $http_*は、そのような要求を送信するクライアントによって改ざんされる可能性があるためです。 (友人によって私に指摘された)。

EDIT:上記の点を考慮すると、これにはLuaモジュールを使用することをお勧めします。

次のようなものです。

access_by_lua_block { 
    if ngx.var.remote_addr == ngx.var.realip_remote_addr then 
      return ngx.redirect("http://somewhere.else.please/"); 
    end 
} 
0

あなたのマシンの直接アクセス、つまりあなたのマシンのIP経由でブロックしたいと思っています。

これにはcloudflareによって設定されたhttpヘッダーを使用できます。 cloudflareを介して要求があるたびに、あなたのマシンにアクセスしているマシンのipに$http_cf_connecting_ipを設定します。

したがって、空の$http_cf_connecting_ipを持つすべての要求を拒否する条件を記述できます。

+0

で簡単にそれを行うことができます!ありがとう。あなたが$ remote_addr == $ realip_remote_addr –

+0

があなたの問題を解決するかどうかを確認することもできます。upvoteして受け入れてください。 :) – Satys

0

あなたもそのことについて考えたことはありませんGEOブロック

geo $realip_remote_addr $giveaccess { 
     default 0; 
     IPBLOCK1 1; 
     IPBLOCK2 1; 
     … 
    } 
    server { 
     … 
     location/{ 
     if ($giveaccess = 0){ 
      return 403 "$realip_remote_addr"; 
      #use it for debug 
     } 
    } 
関連する問題