ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

用 nginx-proxy-manager-zh 解决手改 Nginx 配置与证书续期难题:反向代理与自动证书完整指南

用 nginx-proxy-manager-zh 解决手改 Nginx 配置与证书续期难题:反向代理与自动证书完整指南 用 nginx-proxy-manager-zh 解决手改 Nginx 配置与证书续期难题反向代理与自动证书完整指南【免费下载链接】nginx-proxy-manager-zh基于nginx-proxy-manager翻译的中文版本项目地址: https://gitcode.com/gh_mirrors/ng/nginx-proxy-manager-zhnginx-proxy-manager-zh中文界面的反向代理管理工具填表单就能管好 Nginx 配置、Lets Encrypt 证书与 IP 访问控制适合不想碰 conf 文件的用户。每次手改 Nginx 的 conf 文件都提心吊胆、证书快到期了才想起来去续这些活一个容器就能接住。它到底帮你做了什么家里 NAS 和几台服务器跑了 Jellyfin、Nextcloud、Gitea每个服务都想有域名、要 HTTPS还希望有些服务只有自己人访问得了——这套需求一个容器全接住了。它的工作方式很直白你在网页上填表单它在后台生成对应的 Nginx 配置、申请证书、重载服务。几个真实场景给家里五个服务统一挂 HTTPS代理主机列表里五个域名证书全自动申请和续期把内网的 Nextcloud 安全暴露给外网一条转发规则加一个 IP 白名单来源锁死在自己家宽带旧域名收口到新域名一条重定向规则全部流量 301 过去你基本不需要碰 conf 文件界面上的每个选项最终都会渲染进backend/templates/里的 Nginx 模板想细看某个功能怎么落地backend/internal/proxy-host.js是入口。五分钟跑起来 前提只是机器上装好了 Docker关键动作就三个拉取镜像 → 写一个 compose 文件 →docker compose up -d启动compose 文件存成 docker-compose.yml内容就几行services: app: image: chishin/nginx-proxy-manager-zh:release restart: always ports: [80:80, 81:81, 443:443] volumes: [./data:/data, ./letsencrypt:/etc/letsencrypt]启动完浏览器访问http://你的服务器IP:81就是 nginx-proxy-manager-zh 的管理界面。首次登录几个要点默认账号 adminexample.com密码 changeme登录后会强制改密码和邮箱邮箱填真实的证书快到期时靠它提醒80/443 留给代理业务81 是管理界面三个端口都要能对外访问核心能力逐个击破 给内网服务挂上反向代理域名添加代理主机代理主机就是一条反向代理规则简单说把访问你域名的请求转发给内网那台机器一个域名绑定一个目标地址。左侧菜单「主机」→「代理主机」→「添加代理主机」域名填 app.example.com协议选 http转发主机填内网 IP 或容器名转发端口填服务实际端口保存列表里状态变 Online 即生效 提醒转发主机填 Docker 容器名时代理机和目标服务要在同一个 Docker 网络里否则域名解析不到。给站点自动挂上 Lets Encrypt 免费证书在代理主机的「SSL」标签里选 Lets Encryptnginx-proxy-manager-zh 会自动发起域名验证、下载证书到期前自动续期90 天有效期不用你操心。编辑代理主机 →「SSL」标签证书提供商选 Lets Encrypt邮箱填你自己的勾上「强制 SSL」HTTP 访问自动跳 HTTPS保存后等一两分钟证书列表里出现新条目⚠️ 注意泛域名*.example.com走 HTTP 验证申请不了需要配置对应的 DNS 验证插件普通子域直接申请即可。用访问控制列表拦住未授权 IP访问控制列表ACL一组 IP 黑白名单决定哪些来源能进这个站点典型用法是把 Nextcloud 只开放给自己家宽带的 IP。菜单「访问列表」→「添加访问列表」类型选白名单填公网 IP 或 CIDR 段如 123.45.67.0/24回到代理主机编辑页把列表关联到目标站点 提醒白名单模式下没列出的 IP 一律 403先把自己当前 IP 加进去再保存不然容易把自己锁在外面。把旧域名流量重定向到新域名重定向主机不转发任何内容只回一个 301/302 跳转适合换域名、多站合并的场景。菜单「主机」→「重定向主机」→「添加」源域名填旧域名目标地址填新域名的完整 URL跳转码选 301永久跳转搜索引擎会跟着切过去 提醒重定向主机和代理主机共用同一套 SSL 体系旧域名也能自动挂证书跳转时不会出现证书报警。进阶玩法与踩坑实录 如果你还想再折腾一下如果你需要给 /api/ 路径单独做 WebSocket 升级Grafana、Jenkins 这类前端长连接服务常见需求每个主机表单底部都有「高级配置」文本框直接塞 Nginx 原生命令保存时会被渲染进 location 块location /api/ { proxy_pass http://192.168.1.10:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; }更全局的玩法Nginx 的监听参数、HSTS 头、缓存策略都可以从模板层面统一改不想点界面的话它自带一套 REST API脚本批量建主机、批量改证书都行。我一开始也踩过的坑证书申请一直失败我第一反应是 DNS 没生效拿容器日志一拉才发现是 80 端口被机房防火墙挡了Lets Encrypt 的验证请求根本进不来。这种直接看日志里 certbot 相关的报错docker logs 容器名 21 | grep -i certbot第二个坑是列表里状态 Online浏览器却 502 Bad Gateway代理机活着不代表转发目标活着我当时转发目标那台机器重启后 IP 变了规则就废了。排查时在代理机里直接向目标发个请求docker exec 容器名 curl -I http://192.168.1.10:3000不通就是后端的事跟代理机没关系。最隐蔽的一个证书申请成功了浏览器却报证书与域名不匹配。原因不是证书是 DNS 解析到了旧服务器请求走的根本不是这台代理机。申请证书之前先确认解析结果dig short 你的域名返回的必须是代理机的公网 IP。继续深入backend/internal/certificate.js证书申请、域名验证、到期续期的完整流程排查证书问题先读它backend/routes/全部 REST API 的路由定义想脚本化批量管理就照着写仓库 docs 目录下的英文官方文档泛域名 DNS 验证插件、LDAP/OAuth 登录、Docker 网络这些本文没展开的内容都在里面同类工具可以了解一下 TraefikKubernetes 场景更顺手和它底层使用的 Certbot原理相通打开 81 端口的管理界面把你家里第一个服务配成代理主机剩下的交给它。【免费下载链接】nginx-proxy-manager-zh基于nginx-proxy-manager翻译的中文版本项目地址: https://gitcode.com/gh_mirrors/ng/nginx-proxy-manager-zh创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表