Требуется IP 127.0.0.1 иногда работает, а иногда "не будет

У меня очень просто .htaccess файл:

<RequireAll>
    Require all granted

    # require localhost
    Require ip 127.0.0.1
</RequireAll>

и это работает... иногда!

Иногда это бросит мне 403, и error.log объясняет:

[client:: 1: 65443] AH01630: клиент отклонен из-за конфигурации сервера

Почему он не соответствует этому локальному клиенту Require ip 127.0.0.1 править?

4 ответа

Решение

Как оказалось, в 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>
Require ip 127.0.0.1
Require ip ::1

Я не использую.htaccess, так как на моей рабочей станции установлен Apache, и у меня есть полный доступ к файлу http.conf. Но для сайта, подобного phpmyadmin, где я хочу ограничить, откуда люди заходят, у меня есть это:

Require all denied
Require ip 127.0.0.1

Первая строка запрещает доступ всем, включая мою собственную рабочую станцию. Вторая строка добавляет IP-адрес localhost моей рабочей станции в список только разрешенных соединений.

Нет тегов RequireAll или RequireAny. Снова в.htaccess эти теги могут быть необходимы.

Требуется все предоставленные эквивалентно:

Order allow,deny
Allow from all

из более ранних версий Apache, которые открывают сайт всем желающим. Если вы хотите заблокировать сайт для всех, кроме определенных IP-адресов, вам следует начать с:

Require all denied

Вы можете найти больше информации здесь: Обновление до 2.4 с 2.2

Другие вопросы по тегам