Nginx配置HTTPS后仅显示Flask首页,HTTP重定向异常求助
解决方案
问题1:HTTP访问跳转到Nginx默认页
你当前的问题是访问http://example.com时走的是主机80端口,但docker-compose仅将主机8080映射到容器80端口,同时Nginx容器可能加载了默认配置文件抢占请求。
解决步骤:
- 保持docker-compose的
8080:80映射,访问时使用http://example.com:8080触发重定向 - 进入Nginx容器删除默认配置文件,避免其干扰自定义规则:
docker exec -it nginx rm /etc/nginx/conf.d/default.conf docker restart nginx
问题2:HTTPS下仅首页可访问,其他端点返回404
核心原因是Flask默认不信任代理请求,导致路由解析错误,需调整Flask配置:
- 在Flask启动文件(如
run.py)中添加ProxyFix中间件,让应用正确识别代理传递的请求信息:from flask import Flask from werkzeug.middleware.proxy_fix import ProxyFix app = Flask(__name__) # 信任代理传递的X-Forwarded-Proto/For/Host头 app.wsgi_app = ProxyFix(app.wsgi_app, x_for=1, x_proto=1, x_host=1) - 验证Nginx的
proxy_set_header Host $host;配置保留,确保Flask能获取正确的主机名匹配路由
问题3:80端口显示被占用但lsof查不到
使用ss命令替代lsof,它能更准确识别端口占用状态(包括TIME_WAIT连接):
ss -tulpn | grep :80
- 如果是
systemd-resolved等系统服务占用,可临时停止服务或修改其监听端口 - 如果是TIME_WAIT状态的连接,等待几分钟即可自动释放,无需额外操作
验证操作
执行以下命令重启所有容器,然后测试功能:
docker-compose down && docker-compose up -d
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

