跳转至

auth-radius: 通过 RADIUS 协议进行 HTTP 身份验证

安装

您可以在任何基于 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-auth-radius
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-auth-radius

通过在 /etc/nginx/nginx.conf 顶部添加以下内容来启用模块:

load_module modules/ngx_http_auth_radius_module.so;

本文档描述了 nginx-module-auth-radius v0.1.1,于 2026 年 4 月 29 日发布。


几乎完全重写版本,来源于 https://github.com/lexelby/nginx-radius
配置灵感来自 https://github.com/timchengx/nginx-http-radius-module
请参见配置示例:https://gitflic.ru/project/ten0s/nginx-radius

构建:

  1. 获取 nginx 源代码:
$ make getsrc && make src
  1. 构建源代码:
$ make build_all
  1. 本地运行:
$ make run
  1. 本地调试:
$ make gdb
  1. 配置:

示例配置文件:conf/nginx.conf

# 添加 Radius 服务器的主要指令。
# 可以有多个 "radius_server" 指令。
radius_server "radius_server_1" {
    # Radius 服务器 URL
    url "127.0.0.1:1812";

    # Radius 服务器共享密钥
    secret "secret";

    # NAS 标识符,可选
    nas_identifier "nas-identifier";

    # Radius 身份验证请求的超时时间, 可选,默认:5s
    auth_timeout   5s;

    # Radius 身份验证请求的重试次数, 可选,默认:3
    auth_retries   3;

    # Radius 健康请求的超时时间, 可选,默认:5s
    health_timeout 5s;

    # Radius 健康请求的重试次数, 可选,默认:1
    health_retries 1;

    # Radius 身份验证/健康请求队列大小, 可选,默认:10
    # 实际上,可以处理的并发请求数量
    # 而无需重新调度。
    queue_size     10;
}

# 选择 Radius 服务器的位置指令。
# 每个位置可以有多个 "radius_servers" 指令。
radius_servers "radius_server_1";

# 启用模块并进行身份验证请求的位置指令。
auth_radius              "realm" | off;
radius_auth              "realm" | off;

# 启用模块并进行健康请求的位置指令。
radius_health            ["user"] ["passwd"];
  1. 安装(可选):
$ make install

GitHub

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