2

私は非常に単純な.htaccessファイルを持っています:

<RequireAll>
    Require all granted

    # require localhost
    Require ip 127.0.0.1
</RequireAll>

そしてそれはうまくいきます...時々!

時々、403 がスローされ、次のようにerror.log説明されます。

[クライアント ::1:65443] AH01630: サーバー構成によってクライアントが拒否されました

Require ip 127.0.0.1そのローカル クライアントをルールに一致させないのはなぜですか?

4

4 に答える 4

8

結局のところ、Apache 2.4 のRequireは IP と正確に一致します。複数の IP アドレス エイリアスlocalhostがある場合は、それらすべてを一覧表示する必要があります (または、以下で説明するように、存在する場合は特別なエイリアスを使用します)。

この特定のケースでは、error.logエントリはそれをすべて明らかにします: クライアントはIPv6インターフェイス (ip == ::1) を介して接続されました。これもホワイトリストに登録する必要があります。

<RequireAll>
    Require all granted

    # require localhost
    <RequireAny>
        Require ip 127.0.0.1
        Require ip ::1
    </RequireAny>
</RequireAll>

これを行うためのより簡単で安全な方法があるかどうかについての提案は大歓迎です!

アップデート

Helge Kleinが示唆するようにRequire local、より簡潔な代替手段があります。

<RequireAll>
    Require all granted

    # require localhost
    Require local
</RequireAll>
于 2014-11-02T11:54:20.647 に答える
1
Require ip 127.0.0.1
Require ip ::1
于 2015-11-15T16:07:09.923 に答える
0

ワークステーションに Apache がインストールされていて、http.conf ファイルに完全にアクセスできるため、.htaccess は使用しません。しかし、人々がどこからログインするかを制限したいphpmyadminのようなサイトの場合、私はこれを持っています:

Require all denied
Require ip 127.0.0.1

最初の行は、自分のワークステーションを含むすべての人へのアクセスを拒否します。2 行目は、ワークステーションの localhost ip を許可された接続のみのリストに追加します。

RequireAllまたはRequireAnyタグはありません。.htaccess でも、これらのタグが必要になる場合があります。

于 2015-07-27T03:28:50.190 に答える
0

Require all grantは次と同等です。

Order allow,deny
Allow from all

サイトをすべての人に公開する以前のApacheバージョンから。特定の IP を除く全員に対してサイトをブロックすることを意図している場合は、次のものから始める必要があります。

Require all denied

詳細はこちら: 2.2 から 2.4 へのアップグレード

于 2015-07-23T20:14:51.890 に答える