Перейти к содержанию

access-control: Расширенный контроль доступа на основе переменных

Установка

Вы можете установить этот модуль в любой дистрибутив на базе RHEL, включая, но не ограничиваясь:

  • RedHat Enterprise Linux 7, 8, 9 и 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-access-control
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-access-control

Включите модуль, добавив следующее в верхней части /etc/nginx/nginx.conf:

load_module modules/ngx_http_access_control_module.so;

Этот документ описывает nginx-module-access-control v0.1.0, выпущенный 6 января 2026 года.


Синопсис

server {
    listen 80;
    server_name example.com;

    # Разрешить доступ, если $var2 не пустой и не равен нулю. Разрешенный запрос больше не будет соответствовать оставшимся правилам контроля доступа.
    access allow $var1;

    # Запретить доступ, если $var1 не пустой и не равен нулю
    access deny $var2;

    location / {
        # Ваши другие настройки
    }

    location /restricted {
        # Переопределить код статуса отказа
        access_deny_status 404;

        # Запретить доступ, если $var3 не пустой и не равен нулю
        access deny $var3;
    }
}

Директивы

access

Синтаксис: access [allow|deny] variable;

По умолчанию: -

Контекст: http, server, location

Директива access определяет правило контроля доступа на основе переменной. Переменная оценивается во время выполнения, и если она не пустая и не равна нулю, правило считается выполненным.

allow: Разрешает доступ, если условие выполнено. Разрешенный запрос больше не будет соответствовать оставшимся правилам контроля доступа. deny: Запрещает доступ, если условие выполнено.

access_rules_inherit

Синтаксис: access_rules_inherit off | before | after;

По умолчанию: access_rules_inherit off;

Контекст: http, server, location

Определяет, будут ли и как правила контроля доступа с предыдущего уровня применяться в текущем контексте конфигурации. Принимает три значения:

off: не наследовать никаких правил доступа с предыдущего уровня, если на текущем уровне не определена директива доступа. before: применять правила доступа предыдущего уровня перед правилами доступа текущего уровня. after: применять правила доступа предыдущего уровня после правил доступа текущего уровня.

access_deny_status

Синтаксис: access_deny_status code;

По умолчанию: access_deny_status 403;

Контекст: http, server, location

Устанавливает код статуса HTTP, который будет возвращен в ответ, когда доступ запрещен правилом deny.

GitHub

Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-access-control.