使用BunkerWeb实现WebSocket反向代理的Docker Compose配置解析

使用BunkerWeb实现WebSocket反向代理的Docker Compose配置解析

bunkerweb 🛡️ Make your web services secure by default ! bunkerweb 项目地址: https://gitcode.com/gh_mirrors/bu/bunkerweb

在现代Web应用开发中,WebSocket协议因其全双工通信能力而广受欢迎。本文将深入解析如何利用BunkerWeb项目搭建一个支持WebSocket反向代理的安全Web服务架构。

架构概述

这个Docker Compose配置定义了一个完整的Web服务架构,包含三个核心组件:

  1. BunkerWeb:作为前端Web服务器和安全网关
  2. BunkerWeb Scheduler:负责配置管理和自动证书申请
  3. WebSocket测试服务:提供WebSocket功能的后端服务

核心组件详解

BunkerWeb服务配置

bunkerweb:
  image: bunkerity/bunkerweb:1.6.0
  ports:
    - "80:8080/tcp"
    - "443:8443/tcp"
    - "443:8443/udp" # 支持QUIC协议
  environment:
    API_WHITELIST_IP: "127.0.0.0/8 10.20.30.0/24"

关键点解析:

  • 同时监听TCP和UDP的443端口,支持QUIC协议(HTTP/3)
  • API访问限制在本地回环和10.20.30.0/24子网
  • 端口映射将容器内部的8080/8443映射到主机的80/443

Scheduler服务配置

bw-scheduler:
  image: bunkerity/bunkerweb-scheduler:1.6.0
  environment:
    SERVER_NAME: "www.example.com"
    AUTO_LETS_ENCRYPT: "yes"
    USE_REVERSE_PROXY: "yes"
    REVERSE_PROXY_URL: "/ws/"
    REVERSE_PROXY_HOST: "http://myws:8010"
    REVERSE_PROXY_WS: "yes"

核心功能说明:

  • AUTO_LETS_ENCRYPT启用自动Let's Encrypt证书申请
  • USE_REVERSE_PROXY启用反向代理功能
  • REVERSE_PROXY_WS特别声明代理WebSocket连接
  • 所有访问/ws/路径的请求将被转发到后端WebSocket服务

WebSocket测试服务

myws:
  image: ksdn117/web-socket-test

这是一个简单的WebSocket测试服务,实际生产环境中可替换为任何兼容的WebSocket服务。

网络设计

配置中定义了两个专用网络:

  1. bw-universe网络

    • 子网:10.20.30.0/24
    • 连接BunkerWeb和Scheduler
    • 用于管理通信
  2. bw-services网络

    • 连接BunkerWeb和后端服务
    • 隔离业务流量

这种网络隔离设计增强了安全性,确保管理流量和业务流量分离。

安全特性

  1. IP白名单:限制API访问来源
  2. 自动HTTPS:通过Let's Encrypt自动获取证书
  3. 默认服务器禁用:减少攻击面
  4. 性能优化
    • 启用客户端缓存(USE_CLIENT_CACHE)
    • 启用Gzip压缩(USE_GZIP)

实际应用建议

  1. 域名配置:将www.example.com替换为实际域名
  2. 证书配置:确保DNS解析正确指向服务器IP以完成证书申请
  3. WebSocket路径:根据实际需求调整/ws/路径
  4. 后端服务:替换myws为实际WebSocket服务

总结

这个配置展示了BunkerWeb作为反向代理处理WebSocket连接的能力,同时提供了企业级的安全特性和性能优化。通过合理的网络隔离和环境变量配置,可以快速搭建一个安全、高效的WebSocket服务架构。

对于生产环境,建议进一步配置:

  • 详细的访问日志
  • 速率限制
  • 更精细的IP访问控制
  • 监控和告警机制

这种架构特别适合需要实时通信的Web应用,如在线聊天、实时协作工具或金融行情推送等场景。

bunkerweb 🛡️ Make your web services secure by default ! bunkerweb 项目地址: https://gitcode.com/gh_mirrors/bu/bunkerweb

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秦凡湛Sheila

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值