Nginx UI Auth 配置指南:IP 白名单、可信代理与登录安全策略
后端前端运维MCP 服务【免费下载链接】nginx-uiYet another WebUI for Nginx项目地址https://gitcode.com/gh_mirrors/ngi/nginx-ui点击查看免费下载本指南系统讲解 Nginx UI 从 v2.0.0-beta.26 起引入的auth配置段见 docs/guide/config-auth.md涵盖 IP 白名单、可信反向代理、登录失败封禁、TOTP/Passkey 安全会话超时等五个核心配置项。读完本文你将掌握如何通过app.ini或环境变量精确控制访问来源、代理链信任边界与暴力破解防护策略并结合源码理解每个参数的实际生效链路。配置段概览从 v2.0.0-beta.26 开始Nginx UI 允许在配置文件的auth段集中管理授权与安全相关的设置。对应的数据结构定义在 settings/auth.gotype Auth struct { IPWhiteList []string json:ip_white_list ... TrustedProxies []string json:trusted_proxies ... BanThresholdMinutes int json:ban_threshold_minutes binding:min1 MaxAttempts int json:max_attempts binding:min1 SecureSessionTimeoutMinutes int json:secure_session_timeout_minutes binding:min1 }其中BanThresholdMinutes、MaxAttempts的默认值均为10SecureSessionTimeoutMinutes默认值同样为10常量DefaultSecureSessionTimeoutMinutes。所有配置项均可在配置文件中写入也可通过对应的 JSON 键经由 API 修改。IPWhiteList控制哪些来源可以访问类型string示例10.0.0.1支持 IPv4 与 IPv6 字面量可重复出现以配置多个地址[auth] IPWhiteList 10.0.0.1 IPWhiteList 10.0.0.2 IPWhiteList 2001:0000:130F:0000:0000:09C0:876A:130B行为语义默认不配置所有 IP 地址都允许访问 Nginx UI。一旦配置只有列表内的 IP 以及127.0.0.1可以访问 Nginx UI其余来源一律收到403 Forbidden。从源码实现看该策略由中间件 internal/middleware/ip_whitelist.go 强制执行当IPWhiteList为空时直接放行客户端 IP 为127.0.0.1或::1本机回环时同样放行——这保证了管理员通过本机访问管理界面永远不会被误伤否则若客户端 IP 不在白名单内则调用c.AbortWithStatus(http.StatusForbidden)直接中断请求。前置依赖白名单判断依赖c.ClientIP()其取值受TrustedProxies影响如果 Nginx UI 位于反向代理之后而未正确配置TrustedProxiesClientIP()取到的可能是代理地址而非真实客户端地址导致白名单判定失准。因此IP 白名单与可信代理应成对配置。TrustedProxies定义可信代理链边界类型string示例127.0.0.1支持 IP 与 CIDR 网段可重复出现[auth] TrustedProxies 127.0.0.1 TrustedProxies ::1 TrustedProxies 10.0.0.0/8行为语义TrustedProxies决定哪些直连代理 IP或 CIDR可以携带X-Forwarded-For与X-Real-IP头参与客户端真实 IP 的推导未处于反向代理之后保持为空即可。官方 Docker 镜像会自动信任其内置的 loopback Nginx 代理127.0.0.1与::1无需手动配置。自定义反向代理必须显式列出代理地址修改后需重启应用。安全红线严禁使用0.0.0.0/0或::/0否则任意来源都能伪造转发头彻底破坏 IP 白名单与审计的可靠性。源码实现router/client_ip.go 展示了该逻辑trustedProxiesForCurrentTopology()会克隆用户配置的TrustedProxies当检测到正在管理内置 NginxShouldManageBundledNginx()时自动把127.0.0.1、::1追加进信任列表随后通过engine.SetTrustedProxies(...)交给 Gin 框架计算客户端 IP。也就是说“官方镜像自动信任内置 loopback 代理”这一行为在代码层面是显式实现的而自定义代理必须由用户显式声明。BanThresholdMinutes 与 MaxAttempts登录暴力破解防护两个参数共同构成登录失败封禁策略BanThresholdMinutes类型int默认10封禁的时间窗口。MaxAttempts类型int默认10窗口内允许的最大失败次数。默认行为如果用户在 10 分钟内连续登录失败 10 次该用户IP将被封禁 10 分钟。源码链路失败计数与过期登录失败时调用 internal/user/login.go 的BanIP(ip)。若该 IP 尚无封禁记录或记录已过期则以当前时间 BanThresholdMinutes*60秒作为ExpiredAt新建记录否则对Attempts加一。入口拦截登录接口 api/user/auth.go 在开始处理前查询BanIP表若存在未过期且Attempts MaxAttempts的记录直接返回 HTTP429 Too Many Requests与错误码ErrMaxAttempts (4291)并加锁串行化登录请求sync.Mutex防止并发绕过。成功清账登录成功后删除该 IP 的封禁记录见同文件第 117-118 行。封禁名单管理封禁中的 IP 列表可由管理员通过 api/settings/auth.go 提供的GetBanLoginIP查询当前生效的封禁 IP与RemoveBannedIP手动解除封禁接口查看和清理。从测试用例如 internal/user/login_ban_test.go可以确认该策略按“窗口内失败次数达到阈值即封禁”的规则运行。实际部署中建议结合日志观察误封情况必要时调大MaxAttempts或缩短BanThresholdMinutes。SecureSessionTimeoutMinutesTOTP/Passkey 二次验证的有效期类型int默认10行为语义该参数控制一次成功的 TOTP 或 Passkey 验证后被授权的受保护操作如敏感设置变更可以持续多少分钟即“安全会话”的有效时长不影响正常登录会话的生命周期普通登录 token 的有效期由其他机制管理此参数只作用于二次验证授权窗口。取值约束必须是正数缺失、为 0 或负数时回退到 10 分钟默认值。源码实现internal/user/otp.go 中configuredSecureSessionDuration()读取SecureSessionTimeoutMinutes当minutes 0或超过maxSecureSessionTimeoutMinutes上限时返回默认 10 分钟。登录接口在用户开启 2FA 且验证通过后通过SetSecureSessionID(u.ID)生成会话 ID并在响应中返回secure_session_id与secure_session_ttl秒供前端在敏感操作时提交验证见 api/user/auth.go。同时internal/user/secure_session.go、internal/user/secure_session_test.go等文件提供了该机制的存储实现与回归测试确保默认值回退逻辑缺失/零/负数与正向取值均符合预期。配置方式与生效前提auth段配置写入 Nginx UI 的配置文件app.ini后修改TrustedProxies必须重启应用其余参数在应用运行期间可通过“设置”界面实时调整并持久化。配置项同时支持环境变量覆盖详见 docs/guide/env.md适合容器化部署时注入。从 docs/zh_CN/guide/config-auth.md 可查看本指南的中文版本。配置示例组合一个安全的公网部署综合上述配置一个典型的公网部署示例如下[auth] ; 仅允许公司出口 IP 与 IPv6 地址访问 IPWhiteList 10.0.0.1 IPWhiteList 2001:0000:130F:0000:0000:09C0:876A:130B ; 前置 Nginx 反代的真实地址务必精确禁止 0.0.0.0/0 TrustedProxies 127.0.0.1 TrustedProxies 192.168.1.10 ; 登录安全策略5 分钟内失败 5 次则封禁 15 分钟 MaxAttempts 5 BanThresholdMinutes 15 ; 二次验证授权窗口 30 分钟 SecureSessionTimeoutMinutes 30配置时请记住三条要点白名单与可信代理必须协同配置代理信任边界宁小勿大绝不用0.0.0.0/0与::/0登录封禁参数需根据真实误封日志调整以避免合法用户被短暂锁定。赞分享后端前端运维MCP 服务【免费下载链接】nginx-uiYet another WebUI for Nginx项目地址https://gitcode.com/gh_mirrors/ngi/nginx-ui点击查看免费下载相关推荐Guns安全策略配置指南密码策略、黑白名单、登录保护终极教程Guns安全策略配置指南密码策略、黑白名单、登录保护终极教程 Guns是一个现代化的Java应用开发框架基于主流技术Spring Boot3 Vue3Nginx访问控制终极指南快速配置IP白名单与Basic Auth认证Nginx访问控制终极指南快速配置IP白名单与Basic Auth认证 Nginx作为高性能的Web服务器和反向代理其访问控制功能是保护网站安全的重要手段。文档教程技术博客Nginx Proxy Manager 访问列表Access List完全指南IP 黑白名单与 Basic Auth 配置实战Nginx Proxy Manager 访问列表Access List完全指南IP 黑白名单与 Basic Auth 配置实战 导读 访问列表Acces后端API网关创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

大模型金融落地指南:五层技术选型从提示工程到预训练

大模型金融落地指南:五层技术选型从提示工程到预训练

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 5:08:38 阅读更多 →
AMD Ryzen内存插槽规范:B550M迫击炮A2/B2插法原理与实操

AMD Ryzen内存插槽规范:B550M迫击炮A2/B2插法原理与实操

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 5:08:38 阅读更多 →
MISRA C编码规范:嵌入式安全开发的基石

MISRA C编码规范:嵌入式安全开发的基石

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 5:07:38 阅读更多 →

最新新闻

OpenLayers v3.14.0 版本指南:新特性、升级注意点与源码实现剖析

OpenLayers v3.14.0 版本指南:新特性、升级注意点与源码实现剖析

前端GIS数据可视化 【免费下载链接】openlayers OpenLayers 项目地址: https://gitcode.com/gh_mirrors/op/openlayers 点击查看 免费下载 本指南以 OpenLayers 仓库 changelog/v3.14.0.md 为主体,结合 src/ 目录下的实际源码与 test/ 测试用例&#xf…

2026/9/24 5:56:08 阅读更多 →
HP服务器RAID配置实操指南:从阵列选型到rebuild重建避坑

HP服务器RAID配置实操指南:从阵列选型到rebuild重建避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 5:56:08 阅读更多 →
AI生成PPT工具怎么选?万知AI实战解析与效率工作流指南

AI生成PPT工具怎么选?万知AI实战解析与效率工作流指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 5:56:08 阅读更多 →
PX4 多旋翼 PID 手动调参实战指南(Basic 版):速率、姿态与位置控制器的逐层调校

PX4 多旋翼 PID 手动调参实战指南(Basic 版):速率、姿态与位置控制器的逐层调校

嵌入式物联网机器人自动驾驶智能硬件 【免费下载链接】PX4-Autopilot PX4 Autopilot Software 项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot 点击查看 免费下载 本指南面向需要在 PX4-Autopilot 上手动完成多旋翼(四旋翼、六旋翼、八旋翼…

2026/9/24 5:56:08 阅读更多 →
PaddleHub 图像分类模型 rexnet_3_0_imagenet 实战指南:预测、Fine-tune 与 Serving 部署

PaddleHub 图像分类模型 rexnet_3_0_imagenet 实战指南:预测、Fine-tune 与 Serving 部署

人工智能大模型微调模型推理服务 【免费下载链接】PaddleFormers PaddleFormers is an easy-to-use library of pre-trained large language model zoo based on PaddlePaddle. 项目地址: https://gitcode.com/gh_mirrors/pa/PaddleFormers 点击查看 免费下载 本文…

2026/9/24 5:55:08 阅读更多 →
I2C总线深度解析:开漏物理层、多主仲裁与RTL实现

I2C总线深度解析:开漏物理层、多主仲裁与RTL实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 5:55:08 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →