Flask应用显示NGINX默认页问题求助(example2异常)
排查Flask应用返回Nginx默认页的问题
嘿,看起来你碰到了Flask+Nginx部署里的经典问题——一个应用好好的,另一个直接跳Nginx默认页,我来帮你一步步捋清楚可能的原因:
1. 先检查Nginx的完整配置(最可能的问题)
你只贴了example1的server块配置,大概率是example2对应的server块缺失或者配置有误:
- 去Nginx的配置目录(一般是
/etc/nginx/或者/etc/nginx/sites-available/)看看有没有example2.domain.net相关的配置文件 - 如果没有,直接加一个类似example1的server块,注意端口不能和example1重复:
server { listen 80; listen [::]:80; server_name example2.domain.net; location / { proxy_pass http://127.0.0.1:5001; # 这里要换成example2实际运行的端口,别和example1的5000撞了 # 最好加上这些头信息,避免Flask获取不到正确的请求信息 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } - 如果已经有配置,仔细核对
server_name是不是和你访问的域名完全一致,proxy_pass的端口是不是和example2的Flask端口匹配
2. 确认example2的Flask应用真的在运行
别光看Nginx,先确保后端服务没问题:
- 用端口检查命令看看进程状态:
netstat -tulpn | grep 你的example2端口,确认有Flask(或者Gunicorn/uWSGI)进程在监听这个端口 - 在服务器本地直接请求一下:
curl http://127.0.0.1:你的example2端口,看看能不能返回正常的页面内容,而不是报错
3. 验证Nginx配置语法并重载
就算配置写对了,没重载也白搭:
- 先检查配置有没有语法错误:
nginx -t,看到test is successful再往下走 - 重载Nginx让新配置生效:
systemctl reload nginx(如果是老系统就用service nginx reload)
4. 检查文件权限问题
有时候Nginx没权限访问静态文件或者应用目录也会出问题:
- 确保example2的应用目录和文件对Nginx运行用户(一般是
www-data)有读取权限:chown -R www-data:www-data /path/to/example2 - 如果你用了Gunicorn/uWSGI托管Flask,也要确认这些进程的运行用户有足够权限
5. 排查DNS和缓存
有时候是本地的锅:
- 本地电脑执行
nslookup example2.domain.net,确认解析出来的IP是你的服务器IP - 清一下浏览器缓存,或者用隐私窗口访问,避免旧缓存导致的误导
如果走完这些步骤还是没解决,把example2的Nginx配置和Flask启动命令贴出来,我再帮你深挖问题。
内容的提问来源于stack exchange,提问作者Jules Winnfield
相关产品推荐
相关产品推荐

