这是一个基于 Nginx + Python (Flask/Gevent) 构建的高级网络代理与流处理网关。它的核心设计理念是通过环境变量动态生成配置,并结合 Python 应用作为"边车"(Sidecar)来处理 Nginx 无法单独完成的高级流量操作。
核心架构分为三个层次:流量入口 (Nginx) -> 控制逻辑 (Python Scripts) -> 数据/扩展 (SSH/Storage)。
LISTEN、FORWARD、PROXY 等环境变量快速定义反向代理规则,自带 SSL 卸载能力。BIND 变量支持 L4 层的端口转发 (基于 Nginx Stream 模块)。REDIRECT 变量快速搭建域名或路径重定向服务。当 Nginx 需要进行复杂的流量清洗时,会将请求转发给内部的 Python Flask 服务(默认端口 8000)。
Set-Cookie, Location)进行正则匹配和字符串替换,有效解决反向代理场景下的域名/路径不匹配问题。内置完整的 SSH 隧道管理能力,通过 tunnel.py 和 tunneld.py 实现:
tcpdump 将流量录制为 .pcap 文件。pcaper.py 解析器(基于 dpkt),可从 PCAP 文件中还原 HTTP 请求/响应。配置即代码 (Configuration as Environment Variables)
start.py 作为一个复杂的配置生成器,将简单的环境变量声明(如 LISTEN="domain.com:80")自动翻译为复杂的 nginx.conf 和辅助脚本配置。Sidecar 模式 (Nginx + Python)
自包含工具链
# 基本反向代理 + 百度转发
LISTEN=www.abc.com:www.baidu.com:80 FORWARD=www.baidu.com ./start.py
# 端口转发 (L4)
BIND=80:192.168.1.1:80 ./start.py
# 代理 OpenAI
PROXY=openai.com ./start.py
Content type
Image
Digest
sha256:e140b049c…
Size
84.9 MB
Last updated
11 days ago
docker pull kitsudo/nginx-stream