跳转至

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,于 2026 年 1 月 06 日发布。


概述

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 状态码。

GitHub

您可以在 nginx-module-access-control 的 GitHub 仓库 中找到此模块的其他配置提示和文档。