反向代理别头秃:nginx-proxy-manager-zh中文版,3步让网站安全上线
【免费下载链接】nginx-proxy-manager-zh基于nginx-proxy-manager翻译的中文版本项目地址: https://gitcode.com/gh_mirrors/ng/nginx-proxy-manager-zh
如果你维护过两个以上网站,多半经历过这样的夜晚:为了给新服务配一个反向代理,翻遍了网上教程,把server、location、upstream抄来抄去,改崩了 Nginx 只能靠备份文件救场;想给域名加个 HTTPS,还得手动折腾 Certbot、定时续期脚本。nginx-proxy-manager-zh 就是来解决这件事的——它是知名开源项目 nginx-proxy-manager 的中文翻译版,把反向代理、SSL 证书、访问控制这些重活全部搬进一个中文 Web 界面,你只需要点鼠标填表单,几分钟就能让服务安全上线。
先看对比:它到底替你省了什么?
在动手之前,先直观感受一下它与传统做法的差距:
| 你要做的事 | 传统方式 | 用 nginx-proxy-manager-zh |
|---|---|---|
| 新增一个代理 | 手写 Nginx 配置,重启检查 | 填域名 + 目标地址,点保存即生效 |
| 给域名配 HTTPS | 安装 Certbot、写续期 cron | 勾选 Let's Encrypt,自动申请和续期 |
| 限制谁能访问 | 手写allow/deny或加认证 | 建一个访问列表,勾选绑定 |
| 给团队分权限 | 无现成方案 | 内置多用户与角色权限 |
| 排查问题 | 翻日志靠猜 | 有审计日志,谁在何时改了什么一目了然 |
一句话概括:它把"工程师手写配置"变成了"可视化点选",门槛从"懂 Nginx"降到了"会填表单"。
图1:代理主机列表页,所有规则的状态、SSL、访问权限一目了然
3分钟安装:一条命令跑起来
本项目推荐用 Docker 部署,这也是最省心的方式。先拉取代码:
git clone https://gitcode.com/gh_mirrors/ng/nginx-proxy-manager-zh cd nginx-proxy-manager-zh在项目根目录创建docker-compose.yml:
version: '3' services: app: image: 'chishin/nginx-proxy-manager-zh:release' restart: always ports: - '80:80' - '81:81' - '443:443' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt启动并等待镜像拉取完成:
docker compose up -d然后打开浏览器访问http://你的服务器IP:81,用默认账号登录(登录后系统会强制你修改):
- 邮箱:
admin@example.com - 密码:
changeme
默认账号的创建逻辑见后端源码 backend/setup.js,你也可以通过环境变量INITIAL_ADMIN_EMAIL和INITIAL_ADMIN_PASSWORD自定义初始管理员。
图2:登录后即可进入全中文的管理后台
一个完整实战:把本地服务安全地暴露到公网
假设你有个跑在http://localhost:3000的应用,想通过myapp.example.com让外部访问,并且要带 HTTPS。跟着下面四步走。
第一步:添加代理主机
左侧菜单进入"主机 → 代理主机",点击"添加代理主机"。
第二步:填转发信息
在"详情"标签页依次填写:
| 字段 | 填写内容 |
|---|---|
| 域名 | myapp.example.com |
| 方案 | http(你的应用支持 HTTPS 就选 https) |
| 转发主机名/IP | host.docker.internal(Docker 内访问宿主机) |
| 转发端口 | 3000 |
表单界面见 frontend/js/app/nginx/proxy/form.ejs,所有字段都有中文说明。
图3:添加代理主机的表单,域名、转发地址、SSL 都在同一个界面完成
第三步:勾选免费证书
切到"SSL"标签页,勾选"Let's Encrypt",输入一个邮箱,把"强制 SSL"也打开。保存时系统会自动向 Let's Encrypt 申请证书——这一步通常 30 秒内完成,完全不用接触命令行。
图4:证书面板统一展示所有证书的提供商与到期时间,续期由系统自动处理
第四步:验证
现在访问https://myapp.example.com,你应该能看到自己的应用,浏览器地址栏带锁。回到证书页面,能看到刚生成的证书和到期时间。整个流程从零到 HTTPS 上线,熟练后不超过五分钟。
进阶技巧集:三个高频场景的玩法
场景一:后台只允许公司 IP 访问
操作:进入"访问列表"新建一个列表,添加允许的 IP 段;回到代理主机,把该主机的"访问列表"从"公开访问"切换为你新建的列表。配置界面见 frontend/js/app/nginx/access/。
效果:列表外的人访问会直接被拒绝,无需改任何 Nginx 配置。配合用户名密码认证,还可以做到 IP 白名单 + 账号密码双重校验,适合内网管理后台这类敏感服务。
图5:访问列表可绑定多个代理主机,一处修改全局生效
场景二:老域名迁移到新域名
操作:进入"主机 → 重定向主机",源域名填old.example.com,目标 URL 填https://new.example.com,重定向类型选"永久重定向 (301)"。
效果:访问旧域名的用户会被自动带到新站,并且搜索引擎会把权重从旧域名转移到新域名,迁移过程对用户无感。
图6:重定向主机支持 301/302,是域名迁移和活动页跳转的常用工具
场景三:不认识的域名访问你的服务器
操作:进入"设置 → 默认站点",可以设置当有人用未配置的域名访问时,显示欢迎页、404 页面,或返回 444(直接断开连接)。
效果:这是很多人忽略的安全细节——避免恶意域名解析到你的 IP 后被用于其他用途。配合 404 主机功能(见 frontend/js/app/nginx/dead/),可以对占位域名做精细控制。
问题排查速查表
遇到问题先别慌,对照下面这张表定位:
| 症状 | 可能原因 | 解决办法 |
|---|---|---|
| 证书申请失败 | 域名没解析到服务器 IP | 先ping域名确认指向,再重试申请 |
| 证书申请失败 | 80/443 端口被防火墙拦截 | 检查云厂商安全组和本机防火墙放行规则 |
| 代理无法访问 | 目标服务没启动或端口写错 | 在服务器本机curl localhost:3000验证服务可用 |
| 代理无法访问 | Docker 内容器访问宿主机地址写错 | 宿主机地址用host.docker.internal而非localhost |
| 配置不生效 | 修改后未触发重载 | 保存后等待几秒,看 Nginx 服务是否自动 reload |
| 想要排查问题 | 不知道哪里出错 | 用docker logs <容器名>查看 Nginx 与后端日志 |
写在最后
回到开头那个场景:当你下次需要再上一个新服务时,流程会变成——打开后台、填三行表单、勾选证书、保存。仅此而已。中文界面让团队成员(哪怕是没碰过服务器的同事)也能安全地操作,而审计日志保证每一步改动都有迹可循。
别再把时间花在抄配置上了,现在就 clone 这个项目、跑起 docker compose,用三分钟把你的第一个代理服务上线,剩下的交给它自动完成。
【免费下载链接】nginx-proxy-manager-zh基于nginx-proxy-manager翻译的中文版本项目地址: https://gitcode.com/gh_mirrors/ng/nginx-proxy-manager-zh
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考