5 分钟看懂 Lucky 反向代理一条规则起步生产加固收尾【免费下载链接】lucky软硬路由公网神器,ipv6/ipv4 端口转发,反向代理,DDNS,WOL,ipv4 stun内网穿透,cron,acme,rclone,ftp,webdav,filebrowser项目地址: https://gitcode.com/GitHub_Trending/luc/luckyLucky 是一个跑在内网出口或网关位置的流量管理工具反向代理是其中复用率最高的模块把外网打到某个端口的 HTTP 请求按域名规则转发给内网真实服务。本文按先跑通、再配好、后加固的顺序把规则模型、负载均衡和安全参数讲到位。它到底解决什么问题先区分两种常见做法。端口转发是四层操作外网12345端口对应内网某台机器的某个端口一条连接只认端口不关心 URL 里写的是什么。反向代理工作在 HTTP 层一个 80/443 端口上可以挂几十个域名Lucky 读取请求头里的Host再决定这条请求该去哪个后端。这意味着三件事一个公网入口服务多个内网站点不用为每个应用申请端口后端服务可以完全没有公网 IP、不暴露真实地址认证、访问控制这类逻辑可以在入口统一做后端保持干净。Lucky 的规则配置界面把这条链路压缩成了两个关键字段监听端口请求从哪里进来和目标地址请求去哪里。因为匹配发生在 HTTP 层所以 WebSocket、SSE 这类长连接也直接可代理不需要额外声明协议。五分钟跑通第一条规则最小可用配置只回答三个问题监听哪个端口、默认转发到哪、哪个域名走哪个后端。下面这段配置对应一个 80 端口入口a.com走 3606 服务其余域名走默认后端可以直接抄进 Lucky 的反向代理配置{ RuleName: web-gateway, // 主规则名仅用于识别 Enable: true, ListenIP: , // 留空表示监听所有地址 ListenPort: 80, EnableTLS: false, // 没有证书时先走 HTTP 验证链路 Network: tcp4, DefaultProxy: { // 默认子规则域名未命中时的兜底后端 Locations: [http://192.168.31.80:3660], EnableAccessLog: true }, ProxyList: [ { Enable: true, Remark: 3606后台, Domains: [a.com], // 前端域名精确匹配 Locations: [http://192.168.31.80:3660] } ] }规则保存后出现在规则列表中打开开关即生效。两个容易卡的点Locations里必须带http://前缀缺协议会解析失败同一条主规则下域名不能被子规则重复占用。把规则配到位主规则 / 子规则Lucky 反向代理采用两级结构。主规则ReverseProxyRule定义一个独立监听的 HTTP 服务监听 IP、端口、网络族tcp4/tcp6、是否启用 TLS以及一个DefaultProxy和一组ProxyList。子规则SubReverProxyRule定义某批域名 → 某组后端并携带各自独立的日志、认证、IP 过滤参数。请求进来后的处理顺序固定从Host头取出域名在子规则的域名表里精确查找命中且启用 → 用该子规则未命中 → 落到DefaultProxy依次执行 IP 检查、UA 检查、Basic 认证从子规则的Locations取出一个后端地址转发请求Host头保持客户端使用的域名。这个顺序解释了几个常见现象。子规则未启用时流量自动滑到默认后端所以默认后端建议真的指向一个能返回 404 或维护页的服务而不是某个业务端口否则未配置的域名会悄悄打进业务里。域名查找是精确匹配不解析通配符a.com和www.a.com是两条独立配置。多后端怎么调负载均衡当一个子规则的Locations填入多个地址时Lucky 按顺序轮转使用它们第 1 个请求去 A第 2 个去 B第 3 个再回 A。选择粒度是单个请求不是连接。策略Lucky 反向代理的支持情况落地方式轮询内置多地址自动轮转按顺序填后端地址即可加权轮询无独立权重字段在列表里重复高权重后端模拟比例最少连接未内置交给外层负载均衡或后端自身排队IP 哈希 / 会话保持未内置用应用层 Cookie 会话粘滞或前置一层 LB需要加权时靠重复条目凑比例。比如 A 机扛 2/3 流量、B 机扛 1/3Locations: [ http://10.0.0.11:8080, http://10.0.0.11:8080, http://10.0.0.12:8080 ]因为轮询是无状态计数器不感知后端健康。某个后端宕机时请求仍会轮到它并返回 5xx访问日志里会留下对应的错误条目。生产上建议后端自身带健康检测或在更外层做探活摘除。安全怎么加白名单 / 认证 / 过滤防护按请求经过的层次排先网络层挡掉不该来的 IP再应用层要求身份最后用 UA 过滤清掉明显是扫描器的流量。每一层都在子规则上独立配置不同域名可以用不同策略。IP 白名单与黑名单怎么选子规则的SafeIPMode取值whitelist或blacklist匹配依据是识别出的客户端 IP。内网工具类服务后台、文件管理用白名单默认拒绝面向公众的服务用黑名单只封已知的攻击源。注意白名单判断用的是下面原始 IP 还原之后的结果配错代理信任网段时白名单会失效。原始客户端 IP 怎么还原Lucky 默认把 TCP 对端的RemoteIP当客户端 IP。当 Lucky 后面还有一层反代云 LB、CDN时真实 IP 在X-Forwarded-For里。此时需要同时配置ForwardedByClientIP: true、RemoteIPHeaders要读取的头名和TrustedCIDRsStrList哪些来源 IP 有权伪造这些头。因为信任网段之外的来源一律不读请求头所以这里不存在客户端伪造头绕过白名单的问题但反过来忘了配信任网段会导致白名单永远匹配到内网网关地址。Basic 认证与 UA 过滤EnableBasicAuth开启后请求必须带合法的Authorization头才进入转发失败直接 401。它适合给内部后台加第二道门不适合做唯一防线——认证信息走 HTTP 头未开 TLS 时建议先解决加密再启用。SafeUserAgentMode同样是黑白名单二选一匹配方式是子串包含而不是正则黑名单模式填curl、python-requests可以快速挡住脚本流量代价是浏览器内核异常的合法客户端也会被误伤用之前先在访问日志里确认误伤面。另外子规则支持自定义robots.txt内容CustomRobotTxt对外服务可以借此控制搜索引擎抓取范围。上生产之前监控、日志与版本管理关键指标看什么反向代理本身不输出 Prometheus 指标日常盯四个信号访问日志中的 5xx 比例后端故障最先体现在这里后端地址转换出错类错误日志通常是规则配错而不是网络问题单条规则的请求量变化突增可能是扫描或被滥用程序日志中的端口占用、TLS 降级提示主规则能否正常监听取决于此。访问日志字段怎么读每条访问日志是 JSON字段含义固定字段含义ClientIP还原后的客户端 IP经过 X-Forwarded-For 处理RemoteIPTCP 直连对端 IPMethod/Host/URL请求方法、Host 头、完整 URLUserAgent客户端 UAClientIP与RemoteIP不一致是正常且有用的信号说明请求经过了代理链。日志存在每条子规则独立的内存环形缓冲里重启即清空所以重要事故要当场导出。配置备份与回滚Lucky 每次增删改规则都会把完整配置写回磁盘配置就是单个 JSON 文件备份动作本身很简单定期把 Lucky 数据目录打包存档保留最近若干个版本每次变更在变更记录里写清改了什么、为什么改回滚 覆盖配置文件 重启服务scripts/lucky.service提供了 systemd 单元文件重启路径是标准的。调优与避坑值得调的参数参数控制什么什么时候调AccessLogMaxNum每条子规则的日志环形缓冲容量子规则多且 MaxNum 很大时内存占用随规则数线性增长按排查需要取够用值即可WebListShowLastLogMaxCount管理界面每条规则展示的最新日志条数界面刷得太卡时调小LogLevel/LogOutputToConsole日志级别与是否同步输出到进程标准输出排障期打开控制台输出稳定后关闭减少 IO连接池与读写超时方面Lucky 反向代理直接使用 Gonet/http的默认行为到后端的连接自动 keep-alive 复用未显式设置读超时。所以 WebSocket、长轮询不需要任何额外配置反过来如果某个后端会挂起不返回连接会一直占着需要在外层 LB 或后端自身加超时兜底。高频翻车点后端地址漏协议头Locations里只写 IP 端口转发时报后端地址转换出错并返回 502。监听端口撞车两条主规则用同一个端口后启动的会直接失败新建规则前先核对端口占用。域名重复同一主规则下两个子规则写了同一个前端域名保存时会报域名冲突规则不生效。TLS 静默降级开启EnableTLS但证书列表为空时服务会退回明文 HTTP 而不报错只在程序日志里记一条提示。上线前确认证书已签发且覆盖对应域名。白名单匹配到网关 IPLucky 位于代理链末端却忘了配信任网段和请求头白名单判断用的永远是网关内网地址等于没配。认证凭据明文存放Basic 认证的用户名密码以明文存于配置文件配置文件权限和备份文件的保管范围要与敏感数据对齐。三条可以直接执行的最佳实践可用性默认子规则永远指向一个可控的兜底服务404 或维护页启用 TLS 前先确认证书列表非空。因为未命中域名的流量全部走默认后端兜底失控等于把整个入口交给未知域名。性能同一业务的多台后端放进同一条子规则的Locations用轮询分担日志缓冲按子规则数量取够用值。因为轮询无状态、日志在内存这两个点决定了水平扩容和长期运行的资源上限。安全暴露面用 IP 白名单收窄内部后台叠加 Basic 认证X-Forwarded-For只从明确的信任网段读取。三层各自独立失败也不会互相放大风险入口守得住后端就可以保持简单。【免费下载链接】lucky软硬路由公网神器,ipv6/ipv4 端口转发,反向代理,DDNS,WOL,ipv4 stun内网穿透,cron,acme,rclone,ftp,webdav,filebrowser项目地址: https://gitcode.com/GitHub_Trending/luc/lucky创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考