Node.js 后端与同一台服务器上的简单前端

Node.js 后端与同一台服务器上的简单前端

我有/var/www/html/index.html

我有/var/www/ai_backendserver.js

server.js 在端口 5000 上运行。因此,如果我从这台机器 curl http://localhost:5000,我会得到响应。

但是如果我从 index.html 向 server_ip/api 发送 post 请求,我会收到错误

POST http://server_ip/api 404 (Not Found)

这是我的 nginx conf 文件

server {
        listen 80 default_server;
        listen [::]:80 default_server;

    root /var/www/html;

    index index.html index.htm index.nginx-debian.html;

    server_name <server_ip>; # i have real ip in config file

    location / {
            # serve static frontend first
            try_files $uri $uri/ /index.html;
    }

    # location ~*^/(api|posts|products) {
    location /api {
            proxy_pass http://localhost:5000;
            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;
    }

}

答案1

您的配置看起来基本正确,但您可以检查以下几点:

  • 确保您的后端服务正在运行并监听 localhost:5000。
  • 检查在更改配置文件后是否已重新加载 nginx。您可以在服务器上运行 sudo systemctl reload nginx 来执行此操作。
  • 检查 nginx 错误日志,查看是否有任何相关错误消息可以解释为什么代理无法按预期工作。您可以在 /var/log/nginx/error.log 中找到日志。
  • 确保您的前端将 POST 请求发送到正确的 URL。根据您的配置,它应该将请求发送到 http://<server_ip>/api。如果您使用的是相对 URL(如 /api),它可能无法正常工作。
  • 检查 /var/log/nginx/access.log 中的访问日志,查看请求是否到达 nginx 以及是否正确路由到后端服务。您应该在日志中看到一行,其中包含 HTTP 状态代码和请求的 URL。

相关内容