从 Lucky 迁移到 Nginx:我的轻量级反向代理方案
Lucky 确实非常方便——证书自动续订、DDNS、Web 服务代理等功能开箱即用,几下点击就能搞定。但作为一个有点”开源洁癖”的用户,我还是决定换回更透明、可控的 Nginx。
起初我尝试过 Nginx Proxy Manager(NPM),但它配置略显繁琐,尤其在多端口场景下不够灵活。最终,我选择了 nginx-ui ——一个简洁、现代化且功能完整的 Nginx 可视化管理工具。
部署 nginx-ui
我使用 Docker Compose 进行部署,配置如下:
services: npm: image: uozi/nginx-ui:latest restart: unless-stopped container_name: nginxui network_mode: host environment: TZ: Asia/Shanghai ports: - 7080:80 - 7443:443 volumes: - /opt/dockerfile/nginxui/conf:/etc/nginx - /opt/dockerfile/nginxui/nginx-ui:/etc/nginx-ui - /var/run/docker.sock:/var/run/docker.sock说明:这里使用 network_mode: host 是为了简化端口映射,其中的 7080 和 7443 就直接失效了,无法通过 7080 访问。我们挂了 /opt/dockerfile/nginxui/conf 可以去修改里面的端口,来达到修改默认访问地址的目的。
防火墙配置
在 Lucky 中,服务能直接访问,是因为它默认被加入了防火墙白名单。而自行部署的 nginx-ui 则需要手动放行。
进入你路由器或系统的 防火墙 → 通信规则,添加允许外部访问你所需端口(如 7080、7443 或自定义 HTTPS 端口)的规则:

配置 DDNS(以腾讯云 DNSPod 为例)
如果你使用的是内网穿透 + DDNS 方案,记得在代理软件中将检测本机 IP 的 URL 加入 直连列表,避免请求到错误的 IP:

腾讯云子账号权限配置
为了安全起见,建议使用子账号配合最小权限策略。在 腾讯云控制台 → 访问管理 → 策略 中创建如下策略:
{ "statement": [ { "action": [ "dnspod:DescribeDomainList", "dnspod:DescribeRecordFilterList", "dnspod:DescribeRecordList", "dnspod:CreateRecord", "dnspod:ModifyRecord", "dnspod:DeleteRecord" ], "effect": "allow", "resource": [ "*" ] } ], "version": "2.0"}然后在 nginx-ui 的 凭证管理 中填入子账号的 SecretId 和 SecretKey:

反向代理配置技巧
在 nginx-ui 中,每一个监听端口、域名和转发规则都可以单独维护,相比 Lucky 那种”工具式整合”,我更喜欢这种”配置文件即规则”的方式。
常见场景包括:
- 443 → 内网某服务 HTTPS
- 不同二级域名反代到不同本地端口
- 使用 Let’s Encrypt 自动签发证书
- 结合 DDNS 实现公网访问家庭服务
nginx-ui 的优点在于:
- 支持图形化编辑 Nginx 配置
- 证书管理方便
- 反代规则灵活
- 保留了 Nginx 原生可控性
为什么最终放弃 Lucky
总结下来,Lucky 更像是一个”把很多家用场景打包好”的集成工具,而 nginx-ui 则更适合愿意亲自掌控配置的人。
我放弃 Lucky 的原因主要有几点:
- 闭源/黑盒感更强,很多行为不如 Nginx 透明
- 灵活性有限,遇到稍复杂的反代需求不够优雅
- 长期可维护性考虑,Nginx 生态更稳定,也更通用
如果你只是想快速用起来,Lucky 没问题;但如果你希望整个家庭服务入口更标准、更清晰、以后迁移更容易,那么 nginx-ui + Nginx 会是一个更舒服的方案。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!