ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

反向代理别头秃:nginx-proxy-manager-zh中文版,3步让网站安全上线

反向代理别头秃:nginx-proxy-manager-zh中文版,3步让网站安全上线

反向代理别头秃:nginx-proxy-manager-zh中文版,3步让网站安全上线

【免费下载链接】nginx-proxy-manager-zh基于nginx-proxy-manager翻译的中文版本项目地址: https://gitcode.com/gh_mirrors/ng/nginx-proxy-manager-zh

如果你维护过两个以上网站,多半经历过这样的夜晚:为了给新服务配一个反向代理,翻遍了网上教程,把serverlocationupstream抄来抄去,改崩了 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_EMAILINITIAL_ADMIN_PASSWORD自定义初始管理员。

图2:登录后即可进入全中文的管理后台

一个完整实战:把本地服务安全地暴露到公网

假设你有个跑在http://localhost:3000的应用,想通过myapp.example.com让外部访问,并且要带 HTTPS。跟着下面四步走。

第一步:添加代理主机

左侧菜单进入"主机 → 代理主机",点击"添加代理主机"。

第二步:填转发信息

在"详情"标签页依次填写:

字段填写内容
域名myapp.example.com
方案http(你的应用支持 HTTPS 就选 https)
转发主机名/IPhost.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/),可以对占位域名做精细控制。

问题排查速查表

遇到问题先别慌,对照下面这张表定位:

症状可能原因解决办法
证书申请失败域名没解析到服务器 IPping域名确认指向,再重试申请
证书申请失败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),仅供参考

返回列表