Ограничить доступ в зависимости от переменной среды

Ограничить доступ в зависимости от переменной среды

Попытка проявить смекалку и разрешить доступ в зависимости от переменной окружения. Похоже, это не работает (ошибок нет, выражение всегда ложно).


Что я пробовал:

<VirtualHost *:80>

  ...

  <Directory /var/www/html>
    Options       Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order         allow,deny

    <If "reqenv('ENVIRONMENT_STATE') == 'dev'">
      allow from 1.22.333.0/24
      deny from all
    </If>
    <Else>
      allow from all
    </Else>
  </Directory>
</VirtualHost>

Ожидаемое поведение:

Если ENVIRONMENT_STATEустановлено значение 'dev', то ограничить любой доступ, за исключением указанного IP-адреса.


Источники:

http://httpd.apache.org/docs/2.4/mod/core.html#else
https://httpd.apache.org/docs/2.4/expr.html

решение1

Я бы использовал файл .htaccess для ограничения IP. Причины следующие:

  • Вы можете управлять исходным кодом.
  • При добавлении или удалении IP-адресов перезагрузка сервера не требуется.
  • Если вы случайно заблокировали себя, вы всегда можете войти по FTP и отредактировать файл, чтобы восстановить доступ.

Видеть этовопросдля примера.

Связанный контент