通过 Nginx + Lua实现智能反向代理下载服务,支持多次自动跟随重定向、域名黑白名单、流式传输、断点续传、智能 DNS解析等功能。
- ✅ 自动跟随重定向(可配置最大次数)
- ✅ 分块流式传输(内存优化)
- ✅ 断点续传支持(Range头处理)
- ✅ 智能 DNS解析(IPv4/IPv6双栈优先)
- ✅ 域名访问控制(黑白名单机制)
- ✅ 自定义 DNS服务器
- ✅ SSL证书验证开关
- ✅ 自定义 User-Agent
- ✅ 连接超时控制
- ✅ 支持 GET和 POST请求
- OpenResty(推荐) / Nginx (with lua-nginx-module)
- LuaSocket
-
安装 OpenResty
请根据发行版参考官方文档安装:
📚 OpenResty官方预编译包安装 -
安装 LuaSocket
建议通过 LuaRocks安装# 安装 LuaRocks sudo apt install luarocks # 安装 LuaSocket luarocks install luasocket
-
部署配置文件
# conf文件仅供参考,使用前请按需修改! # 关键在于使用 content_by_lua_file加载本项目的 lua脚本 # 创建目录 sudo mkdir -p /usr/local/openresty/nginx/lua # 复制配置文件 cp wget4Nginx.lua /usr/local/openresty/nginx/lua/ cp wget4Nginx.conf /usr/local/openresty/nginx/conf/
-
重载服务
sudo systemctl reload openresty
-- 网络协议优先级
local IPV6_FIRST = false -- 启用 IPv6解析优先(默认为 IPV4优先)
-- 重定向控制
local MAX_REDIRECTS = 5 -- 最大重定向次数(防止死循环)
-- 传输优化
local CHUNK_SIZE = 8192 -- 分块传输大小(bytes)
local ENABLE_RANGE = true -- 启用断点续传支持
-- 超时设置
local DNS_TIMEOUT = 5000 -- DNS查询超时(ms)
local CONN_TIMEOUT = 5000 -- 后端连接超时(ms)
-- 安全配置
local ENABLE_SSL_VERIFY = true -- 开启 SSL证书验证
local ACL_MODE = "none" -- 访问控制模式:
-- "whitelist"|"blacklist"|"none"
-- DNS服务器配置
local DNS_SERVERS = { -- 自定义 DNS服务器池
"1.1.1.1",
"8.8.8.8"
}
-- 自定义 UA
local DEFAULT_UA = "Mozilla/5.0..." -- 缺省 UA(默认使用客户端 UA,仅当客户端 UA为空时使用,如不需要可置空)-- 白名单配置(当ACL_MODE=whitelist时生效)
local DOMAIN_WHITELIST = {
"example.com", -- 精确匹配
"*.example.com" -- 通配符匹配子域名(不包括example.com)
}
-- 黑名单配置(当ACL_MODE=blacklist时生效)
local DOMAIN_BLACKLIST = {
"example.cn",
"*.example.cn"
}# 基本链接格式
https://wget4Nginx.example.com/{file_url}
# 下载示例
wget https://wget4Nginx.example.com/https://github.com/example/repo.zip
# 脚本将自动补充 http://
wget https://wget4Nginx.example.com/github.com/example/repo.zip
# 脚本支持网址编码
wget https://wget4Nginx.example.com/https%3A%2F%2Fgithub.com%2Fexample%2Frepo.zipwget --continue https://wget.example.com/http://example.org/bigfile.tar.gzcurl -H "Range: bytes=100-200" https://wget.example.com/http://example.com/testfile