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

请求排查Nginx Server Blocks部署Node.js API的响应异常

Nginx配置错误定位与修复

核心问题

你的配置里缺少api.tendaafrica.net对应的HTTPS(443端口)server块。当HTTP请求被301重定向到HTTPS后,Nginx找不到匹配api.tendaafrica.net的HTTPS server配置,就会默认匹配到其他HTTPS server(比如static.tendaafrica.net的块),而这个块是处理静态文件的,所以你的API请求被当成静态资源处理,无法得到Node.js服务的响应。

修复方案

需要新增api.tendaafrica.net的HTTPS server块,同时补全主域名HTTPS块的缺失部分,完整配置如下:

#Server blocks for incoming HTTP requests
server {
    if ($host = www.tendaafrica.net) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    if ($host = tendaafrica.net) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    # server block for 'tendaafrica.net', 'www.tendaafrica.net' domains
    listen 80;
    listen [::]:80;
    server_name tendaafrica.net www.tendaafrica.net;
    # redirect any HTTP request to HTTPS
    return 301 https://$http_host$request_uri;
}

server {
    if ($host = api.tendaafrica.net) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    # server block for 'api.tendaafrica.net' domain (HTTP)
    listen 80;
    listen [::]:80;
    server_name api.tendaafrica.net;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

server {
    # server block for 'static.tendaafrica.net' domain (HTTPS)
    server_name static.tendaafrica.net;
    root /var/www/tenda-main;
    index index.html index.htm;
    location / {
        try_files $uri $uri/ =404;
    }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/tendaafrica.net/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/tendaafrica.net/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

# 新增api.tendaafrica.net的HTTPS server块
server {
    server_name api.tendaafrica.net;

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/tendaafrica.net/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/tendaafrica.net/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    # 反向代理到Node.js API
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

server {
    # server block for all the other requests (HTTP)
    listen 80 default_server;
    listen [::]:80 default_server;
    return 444;
}

# server blocks for incoming HTTPS requests
server {
    # server block for 'tendaafrica.net', 'www.tendaafrica.net' domains (HTTPS)
    listen [::]:443 ssl;
    listen 443 ssl;
    server_name tendaafrica.net www.tendaafrica.net;

    # SSL configuration by certbot
    ssl_certificate /etc/letsencrypt/live/tendaafrica.net/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/tendaafrica.net/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    # 这里可以根据主域名的需求添加location配置,比如静态文件或其他代理
    # 示例:如果主域名是静态站点
    # root /path/to/your/main/site;
    # index index.html;
    # location / {
    #     try_files $uri $uri/ =404;
    # }
}

关键修改点

  • 新增了api.tendaafrica.net的443端口server块,配置和HTTP块一致的反向代理规则,确保HTTPS请求能正确转发到Node.js服务。
  • 补全了主域名HTTPS server块的SSL参数和闭合部分,避免配置语法错误。

修改后,执行以下命令生效:

sudo nginx -t  # 检查配置语法
sudo systemctl reload nginx  # 重新加载配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:50:00