2017-08-14 62 views
0

我有一個由nginx服務的前端reactjs。如下所示:快速API後端接收請求但沒有響應,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。前端調用提取到'api/something',快速應用程序接收並處理它,但沒有響應,客戶端錯誤504(網關超時)。有任何想法嗎?

回答

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; 
    } 
} 
+0

我已經設置了上游指令,並用你提供的那個替換了我的位置API,但是我仍然有相同的結果。我可以使用JWT來影響它嗎? – Athomas1

+0

可能是URL中的「www」問題。嘗試更新的配置 –

+0

它得到它的工作!謝謝,我一直試圖弄清楚這一點。 – Athomas1