「IPアドレスを必要としない」.htaccessは単一のIPアドレスでは機能しない

「IPアドレスを必要としない」.htaccessは単一のIPアドレスでは機能しない

.htaccess で IP をブロックするのに問題があります

私は

Require not ip 192.168.20.218

機能しますが、単一の IP をブロックするのではなく、ネットワーク全体をブロックします。

誰かこの問題を解決できますか?

私はUbuntu 14.04.3 LTSを使用してApache 2.4を実行しています

アップデート:シナリオは次のようになります。私は自分のコンピューターで IP を使用しており192.168.20.218、この IP アドレスをブロックするテストを実行しようとしています。試したのは次のことです。

<RequireAll> 
Require all granted 
Require not ip 192.168.20.218 
</RequireAll>

これは私のアクセスをブロックするはずですが、代わりにページへのアクセスを許可し続けています。 を削除すると、Require all grantedネットワーク全体がブロックされます。

答え1

使用できません否定されたアクセスを許可するには、この指令自体を使用する必要がある。ドキュメント:

ディレクティブの結果は、オプションRequireの使用によって否定される可能性がありますnot。他の否定された承認ディレクティブと同様に<RequireNone>ディレクティブが否定された場合、Require失敗するか中立的な結果を返すことしかできず、したがってリクエストを独立して承認することはできません。

代わりに次のようなことを行う必要があります。

<RequireAll>
Require all granted
Require not ip 192.168.20.218
</RequireAll>

つまり、すべてのユーザーを許可し、特定の IP アドレスを除外することになります。

コンテナ<RequireAll>では、その名前が示すように、含まれるすべてのディレクティブが満たされる必要があります。

答え2

この問題がありました。nginx リバース プロキシが配置されていることを忘れていました。Apache に入ってくる IP は、nginx からのリバース プロキシ IP でした。代わりに、リバース プロキシに実際の IP を含むカスタム ヘッダーを設定し、IP をチェックする代わりに .htaccess でこのヘッダーをチェックする必要がありました。

関連情報