Files
qing 0954644ee3 redirect80: 移除confs依赖,配置全部经CLI传递(CLI > ENV > 默认值)
- redirect80.py: 移除 configparser/pymsg.RpcClient 导入和 confs 拉取逻辑,
  配置改为三层加载(默认值 → 环境变量 → CLI 参数)
- core/services.yaml: redirect80 条目展开为完整 CLI 声明
  (--host/--port/--redirect-port/--redirect-code)
- redirect80/README.md: 配置表新增 CLI 参数列,init.txt 章节重写为
  services.yaml 示例
- README.md: 配置链路移除 redirect80,confs 配置表删除 redirect80.ini 行

与 ca v1.1.0 保持一致的配置模式,redirect80 不再依赖 confs 服务。
2026-08-10 06:40:46 +00:00

2.6 KiB
Raw Permalink Blame History

redirect80 — HTTP→HTTPS 重定向服务

基于 Python 内置 http.server 的极简 HTTP 重定向服务,监听 80 端口,将所有 HTTP 请求重定向到 HTTPS (443),实现浏览器和搜索引擎友好的 HTTP→HTTPS 无缝升级。

设计

  • 零 Web 框架依赖:纯 Python 标准库 http.server + ThreadingMixIn 多线程并发
  • 智能重定向:GET/HEAD → 301(搜索引擎友好永久重定向),POST/PUT/DELETE/PATCH → 308(保留方法和 body)
  • Host 保留:读取请求 Host 头构造重定向 URL(剥离端口),回退用配置的监听地址
  • 日志集成:通过 log_client.py 异步批量推送运行日志到 db:8005 的 Logs 表(fail-safe)
  • 配置分层:CLI 参数(由 core/services.yaml 传入) > 环境变量覆盖(REDIRECT80_*) > 代码默认值

配置

配置通过三层加载(CLI > 环境变量 > 默认值),全部配置项由 core/services.yaml 经 CLI 参数传入,不依赖 confs。

配置项 CLI 参数 环境变量 默认值 说明
host --host REDIRECT80_HOST 0.0.0.0 监听地址
port --port REDIRECT80_PORT 80 监听端口
redirect_port --redirect-port REDIRECT80_REDIRECT_PORT 443 重定向目标 HTTPS 端口
redirect_code --redirect-code REDIRECT80_REDIRECT_CODE 301 GET/HEAD 重定向状态码

安装 & 运行

cd redirect80
bash _set.sh   # 创建 venv 并安装依赖
bash _run.sh   # 运行(尝试自动设置 cap_net_bind_service)

端口权限

80 端口是 Linux 特权端口(<1024),需要 CAP_NET_BIND_SERVICE 能力或 root 权限。_run.sh 会自动尝试:

sudo setcap 'cap_net_bind_service=+ep' venv/bin/python3

如果 setcap 不可用或失败,建议使用 systemd 的 AmbientCapabilities=CAP_NET_BIND_SERVICE:

[Service]
AmbientCapabilities=CAP_NET_BIND_SERVICE
ExecStart=/opt/micro_servers/redirect80/_run.sh

在 core 的 services.yaml 中

redirect80 作为最后一个服务启动,配置全部经 CLI 传入:

- name: redirect80
  cmd: bash /opt/micro_servers/redirect80/_run.sh
  args:
    - "--instance"
    - "redirect80"
    - "--log-level"
    - "info"
    - "--host"
    - "0.0.0.0"
    - "--port"
    - "80"
    - "--redirect-port"
    - "443"
    - "--redirect-code"
    - "301"
  depends_on: [waf]
  sleep_before: 0

端口一览

端口 绑定地址 说明
80 0.0.0.0 HTTP 入口,301/308 → HTTPS :443

许可证

MIT License