DigitalOcean部署Django项目访问时报400错误提示HTTPS不支持
问题根因
两个核心原因共同导致该报错:
- 你实际运行的是Django自带的
runserver开发服务器,而非生产级服务。不管DEBUG是否关闭,runserver本质都是面向开发调试的工具,不属于生产级服务,Django官方明确禁止在生产环境使用。该服务器默认仅支持HTTP协议,无法解析HTTPS请求,你看到的乱码报错就是HTTPS握手数据包被HTTP服务解析失败的提示。 - 你的
settings.py中开启了SECURE_SSL_REDIRECT = True配置,该配置会将所有HTTP请求自动重定向到HTTPS协议。你首次访问http://服务器IP:8000时,Django直接跳转至https://服务器IP:8000,开发服务器无法处理HTTPS请求,就抛出了对应的报错。
解决方案
分两种场景处理:
场景1:仅临时测试功能,无需启用HTTPS
直接修改settings.py中的HTTPS相关配置为False即可:
SECURE_SSL_REDIRECT = False SESSION_COOKIE_SECURE = False CSRF_COOKIE_SECURE = False
修改后重启服务,直接通过HTTP协议访问即可正常打开页面。
场景2:正式部署生产环境
请按标准生产部署流程操作:
- 安装Gunicorn/uWSGI这类生产级WSGI服务器启动你的Django项目,完全放弃使用
runserver命令 - 部署Nginx作为反向代理,将公网请求转发到后端Gunicorn服务
- 申请SSL证书配置到Nginx,由Nginx处理HTTPS请求
- 配置完成后再把
settings.py中的三个HTTPS相关配置改回True即可正常使用HTTPS访问
内容的提问来源于stack exchange,提问作者starship
相关产品推荐
相关产品推荐

