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

NGINX配置问题:一个域名可用,另一个无法正常响应

问题

两个域名domain1.site和domain2.site,前者运行正常,后者访问时返回默认的“Welcome to Nginx!”页面,而非预期的Flask应用内容。

domain1.site的NGINX配置

server {
    listen 80;
    server_name domain1.site www.domain1.site;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name domain1.site www.domain1.site;

    ssl_certificate /etc/letsencrypt/live/domain1.site/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain1.site/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8222;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

domain2.site的NGINX配置

server {
    listen 80;
    server_name domain2.site www.domain2.site;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name domain2.site www.domain2.site;

    ssl_certificate /etc/letsencrypt/live/domain2.site/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain2.site/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:3222;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

已知信息:

  • 网站基于Python Flask开发,通过Gunicorn启动,Flask与Gunicorn配置的端口均与NGINX配置一致(domain2对应3222端口)
  • 已尝试禁用domain2.site的SSL,问题依旧
  • DNS记录已验证指向正确服务器IP

排查与解决步骤

1. 确认domain2的NGINX配置已加载生效

  • 执行nginx -t检查配置语法,确保无报错
  • 执行nginx -s reload重新加载配置
  • 检查/etc/nginx/sites-enabled/目录,确认domain2的配置文件已被软链接到该目录,未被注释或遗漏

2. 验证3222端口的Gunicorn服务状态

  • 执行ss -tulpn | grep 3222,确认Gunicorn进程正在监听3222端口
  • 在服务器本地执行curl http://127.0.0.1:3222,检查是否返回预期的Flask页面内容。若请求失败或无响应,说明Gunicorn服务未正常启动,需查看Gunicorn日志定位问题

3. 检查NGINX默认服务器配置

返回默认页面通常是请求被NGINX的默认服务器接管导致:

  • 查看/etc/nginx/nginx.conf或/etc/nginx/sites-available/default,确认是否存在带有default_server标记的server块(如listen 80 default_server)
  • 临时在domain2的server块中添加default_server参数(仅测试用),重新加载配置后访问,验证是否能匹配到正确的服务器块

4. 查看NGINX日志定位问题

  • 过滤domain2的请求日志:
    grep domain2.site /var/log/nginx/access.log
    grep domain2.site /var/log/nginx/error.log
    
    日志会显示请求被哪个server块处理,以及是否存在代理错误、证书异常等问题

5. 验证域名匹配规则

  • 检查server_name配置是否存在拼写错误,确保与访问的域名完全一致(包括www前缀)
  • 若使用通配符或正则表达式,确认规则是否准确匹配目标域名

6. 临时跳过HTTPS跳转测试

修改domain2的80端口server块,直接代理到3222端口:

server {
    listen 80;
    server_name domain2.site www.domain2.site;

    location / {
        proxy_pass http://127.0.0.1:3222;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

重新加载NGINX后访问http://domain2.site,排除301跳转或SSL配置的影响


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:32:03