You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask结合Gunicorn与Nginx的80端口配置问题求助

解决Nginx无法代理Flask应用到80端口的问题

看起来你遇到的核心问题是Nginx没有正确匹配到你的自定义server配置,所以仍然返回默认页面。咱们一步步排查和修复:

1. 修正Server Name配置

你的Nginx配置里server_name yoursite.com;和实际访问的域名www.yyy.com不匹配,这是最关键的问题。Nginx会根据请求的Host头匹配对应的server块,不匹配的话就会用默认的server(也就是显示欢迎页的那个)。

修改你的/etc/nginx/conf.d/virtual.conf:

server {
    listen 80;
    # 改成你实际的域名,也可以同时匹配主域名和子域名
    server_name www.yyy.com yyy.com;
    location / {
        proxy_pass http://0.0.0.0:8000;
        # 建议添加这些代理头,避免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;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

2. 检查并禁用默认Nginx配置

Amazon Linux AMI上的Nginx默认会自带一个默认server配置(通常在/etc/nginx/conf.d/default.conf),如果这个配置存在,它会优先匹配未命中自定义server的请求,导致返回默认页面。

  • 查看默认配置是否存在:
    ls /etc/nginx/conf.d/
    
  • 如果看到default.conf,可以先备份再禁用它:
    sudo mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak
    

3. 验证配置并重载Nginx

修改配置后,一定要先验证语法是否正确,避免出错:

sudo nginx -t

如果输出nginx: configuration file /etc/nginx/nginx.conf test is successful,说明配置没问题,然后重载Nginx让新配置生效:

sudo systemctl reload nginx
# 旧版本系统可以用service命令:sudo service nginx reload

4. 确认端口与安全组设置

确保你的服务器安全组(AWS环境下)或者防火墙开放了80端口,允许外部访问。如果80端口被拦截,也会导致无法正常访问。

5. 排查日志(如果问题仍存在)

如果还是无法访问,可以查看Nginx的错误日志定位问题:

sudo tail -f /var/log/nginx/error.log

内容的提问来源于stack exchange,提问作者Ktp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:12:55