
.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 でこのヘッダーをチェックする必要がありました。