Lucky反向代理实战:3个场景把家里NAS安全地搬上公网
【免费下载链接】lucky软硬路由公网神器,ipv6/ipv4 端口转发,反向代理,DDNS,WOL,ipv4 stun内网穿透,cron,acme,rclone,ftp,webdav,filebrowser项目地址: https://gitcode.com/GitHub_Trending/luc/lucky
家里NAS上跑着博客、网盘、下载器,想把它们暴露出去,又不想一个服务一个端口地对外敞开?Lucky反向代理就是干这个的:用一个域名、一个端口做统一入口,按域名把请求分流到不同后端,再用白名单和认证把守住入口。这篇Lucky配置教程按三个真实场景来讲,从3分钟跑通第一个域名,到负载均衡、访问控制和排错避坑。
快速上手:3分钟转发第一个域名
先记住规则结构:一条规则 = 一个监听端口,规则里有「默认后端」和若干「子规则」。默认后端接住所有没被认领的域名,子规则负责精确认领特定域名。
最小可运行配置只需要填四项:
规则名称:home-nas 监听类型:tcp4 监听端口:80 默认后端地址:http://192.168.1.100:5000操作就三步:
- 新建规则,监听端口填 80,把规则开关打开
- 在默认规则的「后端地址」里填上目标服务的内网地址
- 用公网地址加端口访问,能打开就算成功
为什么要留默认后端:它是个兜底。任何没匹配到子规则的请求都会落到这里,你可以放一个门户页或提示页,避免访客访问未配置的域名时得到莫名其妙的报错。
另外勾选「启用TLS」后,Lucky 会自动取 SSL 模块里当前有效的证书来启用 HTTPS;如果证书列表为空,会退回到明文 HTTP 并在日志里给出提示。
场景一:一个网关暴露多个域名
NAS 域名访问的典型诉求:一个公网 IP 后面挂 blog、pan、dl 三个域名,各去各的后端。
做法是给同一规则加子规则:
- 新建子规则,前端域名填
blog.example.com,后端地址填http://192.168.1.101:80 - 同一个子规则里可以填多个域名,它们指向同一组后端
- 想再加
pan.example.com,就再建一条子规则
请求进来时,Lucky 先看 Host 头:能精确匹配到某个已启用的子规则,就转发给该子规则的后端;匹配不上,才落到默认后端。
一个容易踩的坑:同一个前端域名只能出现在一条子规则里。如果你把pan.example.com填进了两条子规则,域名冲突,规则会直接保存失败。看到「前端域名冲突」的报错,回去查重就行。
内网 IP 会变的话,配合 Lucky 自带的 DDNS 把域名解析跟着走,这套配置就长期可用了。
场景二:多台后端之间做负载均衡
同一个服务跑在多台机器上(比如两个下载节点),想让流量均摊,就在同一条子规则的后端地址里逐行填多个地址。填了多条即视为启用均衡负载,请求按填写顺序依次轮询。
先说清楚一个边界:Lucky 目前的负载均衡是纯轮询,没有 IP 哈希、最少连接这类策略。所以选型看这张表:
| 情况 | 建议 |
|---|---|
| 单台后端,只是想简单扩容 | 别加地址,一条就够 |
| 无状态服务(API、静态页)多台部署 | 填多条后端地址,轮询即可 |
| 有登录态(Session 粘滞) | 轮询会打散会话,保持单后端,或把粘滞交给应用层 |
轮询的好处是简单、无状态、好预测——第 N 个请求去第几台后端,数一下就知道。代价是它不感知各机器的实际负载,机器性能差异大时效果会打折。对家用规模来说,这个代价完全可以接受。
场景三:用白名单与认证守住入口
流量能进来是能力,能挡住不该来的人才是安全。每条子规则都独立带一套安全检查,按顺序执行:IP 检查 → UA 过滤 → Basic 认证,任何一步不过,请求直接被掐掉。
IP 白名单。在规则的「安全设置」里选「IP白名单」模式,再全局维护白名单条目:
注意每条白名单都有有效期,可以手动「设置永久有效」。这是有意的:家里宽带是动态公网 IP 时,过期的白名单条目会自动失效,防止你忘了清理,把某个已经不属于你的 IP 永远放进来。
Basic 认证。打开子规则的 BasicAuth 认证并填用户名密码后,未认证的请求会收到 401。它适合给不想公开的后端(比如管理面板)加一道门槛,代价是浏览器弹窗提示,体验一般,所以一般只给管理类入口用。
UA 过滤。填「UA黑名单」模式加几个特征词,可以挡掉大部分爬虫扫描器。它按子串匹配,别写得太宽,否则可能误伤正常浏览器。
还有一项进阶:如果你前面还叠了一层代理(比如公网网关再转进来),就打开「通过转发头识别真实客户端IP」,并填上可信代理网段(CIDR)和请求头名称。不开这个开关,白名单看到的永远是上一层代理的 IP,等于白配。后端需要拿到访客 IP 做日志的话,还可以把客户端 IP 追加到指定 Header 里传给后端。
避坑与排查:打不开时按顺序查这几点
按从外到内的顺序排查,大多数问题在前两步就能定位。
1. 开关和端口
规则开关是否开启?端口是否被本机其他服务占了?端口冲突时规则启动会失败,日志里能看到监听报错。换端口或停掉占用者。
2. 开访问日志,读 msg 字段
给子规则开启访问日志,日志里每个请求都带 Host、URL、ClientIP、UserAgent 和一条 msg。msg 直接告诉你卡在哪:
- 「禁止访问」→ 被 IP 名单或 UA 名单拦了
- 「BasicAuth认证不通过」→ 用户名密码问题
- 「没有对应后端地址」→ 默认后端是空的
- 「指向后端地址」→ 转发正常,问题在后端自己身上
3. 域名到底匹配上没有
按域名访问时,Host 头必须和子规则里填的前端域名逐字一致,大小写、拼写都算。本地模拟测试可以用 Host 头:
curl -I http://192.168.1.50:80/ curl -H "Host: nas.example.com" http://192.168.1.50:80/两条命令分别复现「走默认后端」和「走子规则」,返回内容不同就说明分流生效了。
4. 后端本身是否可达
先登上跑 Lucky 的机器,直接 curl 后端地址。常见情况:后端只监听了 127.0.0.1,Lucky 转发过去自然连不上;或者后端要求走 TLS,而 Lucky 里填的却是 http。
5. 名单模式有没有选
IP 检查模式既没选白名单、也没选黑名单时,所有请求一律被拒。这个坑极容易忽略,尤其从旧版本升级过来的用户。
收尾:部署前自查清单
- 后端地址在 Lucky 所在机器上已用 curl 验证可达
- IP 检查模式已选定(白名单或黑名单),白名单条目有效期合理
- 已开启访问日志,出了问题能回看
- 公网暴露的规则已启用 TLS 且证书有效
- 域名已正确解析到你的公网 IP,或已接入 DDNS
【免费下载链接】lucky软硬路由公网神器,ipv6/ipv4 端口转发,反向代理,DDNS,WOL,ipv4 stun内网穿透,cron,acme,rclone,ftp,webdav,filebrowser项目地址: https://gitcode.com/GitHub_Trending/luc/lucky
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考