uWSGI配置SSL时报unavailable modifier requested:22错误如何解决
问题根因分析
两个报错对应两个核心触发点:
- uWSGI日志
unavailable modifier requested: 22:modifier 22是uWSGI预留处理HTTPS请求的标识,触发该报错有两个常见原因:- 你的uWSGI没有安装SSL/HTTP处理插件,无法解析HTTPS请求
- 你把HTTPS请求发送到了uWSGI原生协议的监听端口(也就是配置里的5000端口),原生协议端口只能识别uWSGI内部格式的请求,无法处理HTTPS流量
- Postman报错
Client network socket disconnected before secure TLS connection was established是前一个问题的连锁反应:uWSGI无法处理HTTPS握手请求直接断开连接,导致TLS协商失败
修复步骤
1. 修正uWSGI配置
你当前的https配置存在语法错误,且路径配置不全,修改后参考如下:
[uwsgi] master = True # 修正https监听配置:第一个参数为监听地址+端口,不要写非法的=0格式 https = 0.0.0.0:443,signals.crt,signals.key,HIGH # 如果没有Nginx等反向代理需求,建议把socket改为仅本地监听,避免误发请求到该端口 socket = 127.0.0.1:5000 chdir = /somepath # 补全wsgi入口文件的完整路径,不要只写目录 wsgi-file = /somepath/你的入口文件.py processes = 4 threads = 2 stats = 127.0.0.1:9191 # 新增:明确加载http插件,避免找不到HTTPS处理器,根据你的开发语言替换python对应插件名 plugins = http, python3
2. 安装缺失的依赖插件
根据你的系统环境安装对应组件:
- Debian/Ubuntu系:执行
apt install uwsgi-plugin-http uwsgi-plugin-python3 libssl-dev - CentOS/RHEL系:执行
yum install uwsgi-plugin-http uwsgi-plugin-python3 openssl-devel - 如果是pip安装的uWSGI:需要重新编译带SSL支持的版本,执行
pip install --force-reinstall uwsgi
3. 请求验证
测试时请求地址要对应https配置的监听端口,比如https://你的服务器地址:443/接口路径,不要往5000端口发送HTTPS请求。
内容的提问来源于stack exchange,提问作者user1945183
相关产品推荐
相关产品推荐

