Fedora 36 Apache部署Django后,主机名访问报400错误求助
解决Django通过主机名访问出现Bad Request(400)的问题
问题分析
通过IP访问正常但主机名访问返回400错误,核心原因是Django的ALLOWED_HOSTS配置未包含目标主机名,Django会验证请求的Host头,若不在允许列表内则直接返回400错误。此外Apache配置中的重定向规则也可能加剧问题。
解决步骤
1. 更新Django的ALLOWED_HOSTS配置
找到项目根目录下的settings.py文件,修改ALLOWED_HOSTS字段,将主机名calljournal.local添加进去:
ALLOWED_HOSTS = ['192.168.1.109', 'calljournal.local']
注:若仅用于本地测试,可临时设置为
ALLOWED_HOSTS = ['*'],但生产环境请勿使用此配置,存在安全风险。
2. 调整Apache虚拟主机的重定向规则
当前配置中最后一行的重定向会将所有HTTP请求跳转到IP的HTTPS地址,导致主机名请求被强制替换为IP,需修改为重定向到主机名的HTTPS地址:
# 原配置 # redirect / https://192.168.1.109 # 修改后 redirect / https://calljournal.local
若尚未配置HTTPS虚拟主机,需先完成对应配置(如生成本地SSL证书、配置SSL参数),否则可暂时注释掉该重定向规则,先验证HTTP访问是否正常。
3. 重启Apache服务
修改配置后,重启httpd服务使更改生效:
sudo systemctl restart httpd
验证配置
完成上述操作后,再次使用http://calljournal.local或https://calljournal.local访问,即可正常加载Django项目。
内容的提问来源于stack exchange,提问作者a11_max
相关产品推荐
相关产品推荐

