You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django配置stunnel实现HTTPS时报Address already in use(48)如何解决

问题1:stunnel端口流转逻辑与Django端口的关系

stunnel在该场景下作为HTTPS反向代理存在,端口逻辑如下:

  • accept端口是stunnel对外暴露的HTTPS端口,用户端的HTTPS请求直接发送到这个端口,stunnel会在此完成SSL/TLS加密解密工作
  • connect端口是stunnel转发解密后请求的目标端口,对应Django服务监听的端口
  • 完整请求流转:用户发起https://域名:accept端口的请求 → stunnel接收到请求后解密成普通HTTP请求 → 转发到connect端口对应的Django服务(Django runserver默认监听8000端口,所以这里配置connect=8000) → Django处理完请求返回HTTP响应给stunnel → stunnel将响应加密成HTTPS格式返回给用户

该方案不需要修改Django本身的代码,就能在本地开发环境提供HTTPS访问能力,满足Auth0对回调地址必须为HTTPS的要求。

问题2:端口占用报错修复方案

报错核心是stunnel重复绑定端口导致,按以下步骤排查修复:

  • 首先彻底终止所有后台运行的stunnel和Django进程,避免残留进程占用端口:
    执行命令:
    pkill -f stunnel
    pkill -f "python3 manage.py runserver"
    
    随后确认端口无占用:
    lsof -i :8080
    lsof -i :8000
    
    两个命令都无输出说明端口已经释放。
  • 调整启动顺序,先启动Django服务,再启动stunnel:
    python3 manage.py runserver 127.0.0.1:8000 &
    # 等待2秒确认Django启动成功后再执行下一条命令
    sleep 2
    stunnel stunnel/dev_https &
    
  • 如果仍报错,直接修改stunnel配置的accept端口为其他未被占用的端口,比如accept=8443,之后访问时使用https://127.0.0.1:8443即可,注意不要和本机其他服务的端口冲突。
  • 优化建议:可以把stunnel配置里的pid=改成pid = /tmp/stunnel.pid,后续要停止stunnel直接执行kill $(cat /tmp/stunnel.pid)就能精准终止进程,避免残留。

内容的提问来源于stack exchange,提问作者CPC464

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 03:36:05