Express API后端接收请求但没有响应,Nginx

时间:2017-08-14 20:07:41

标签: reactjs express nginx cors http-status-code-504

我有一个由nginx提供服务的前端反应器。如下所示:

server {
    listen 80 default_server;
    server_name website.*  www.website.*;
    root /home/developer/website/frontend/build;

    location / {
        try_files  $uri /index.html;
    }

    location /api {
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_pass http://127.0.0.1:4000;
    }

}

此外,我还有第二个快递应用程序在127.0.0.1:4000接收请求。前端调用fetch到'api / something',Express应用程序接收并处理它但不响应,客户端错误504(网关超时)。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您缺少上游服务器指令。试试这个

upstream api {
    server 127.0.0.1:4000;
}

# remove www from the url
server {
    listen 80;
    server_name www.website.com;
    return 301 $scheme://website.com$request_uri;
}

server {
    listen 0.0.0.0:80;
    server_name website.com website;
    error_log  /var/log/nginx/website.com-error.log error;
    access_log /var/log/nginx/website.log;

    # pass the request to the node.js server with the correct headers
    location /api/ {
        proxy_pass http://api/;
        proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
        proxy_ignore_headers Set-Cookie;
        proxy_hide_header Set-Cookie;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-NginX-Proxy true;
    }
}