繁体   English   中英

Nginx 代理将 Nodejs 传递给 React 应用程序

[英]Nginx Proxy Pass Nodejs to React Application

我有一个反应前端和节点后端,由于某种原因它不会向后端发出正确的请求。

nginx给出的错误日志

111: Connection refused) while connecting to upstream, server: _, request: "GET /api/info HTTP/1.1", upstream: "http://127.0.0.1:5000/info"

我注意到它提出了错误的请求,因为http://127.0.0.1:5000/info应该是http://127.0.0.1:5000/api/info

我的默认配置

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

        root /var/www/{{AppName}}/frontend/build;

        server_name {{myDomainName}};

        location / {
                try_files $uri $uri/ =404;
        }

        location /api/ {
                proxy_pass http://localhost:5000/;
        }

当我访问我的网站时,它只会显示错误 404

我注意到它提出了错误的请求,因为http://127.0.0.1:5000/info应该是http://127.0.0.1:5000/api/info

行动

去掉代理地址末尾的'/'

location /api/ {
    proxy_pass http://localhost:5000; # remove the '/' at the end
}

解释

来自nginx 文档

为了将请求传递到 HTTP 代理服务器,proxy_pass 指令在一个位置内指定。 例如:

 location /some/path/ { proxy_pass http://www.example.com/link/; }

请注意,在上面的第一个示例中,代理服务器的地址后跟一个 URI,/link/。 如果 URI 与地址一起指定,它将替换请求 URI 中与位置参数匹配的部分 例如,这里带有 /some/path/page.html URI 的请求将被代理到http://www.example.com/link/page.html

在您的情况下,URI 是/ ,它替换请求 URI 中的/api/ 所以: http://yourserver/api/info将被代理到http://127.0.0.1:5000/info

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM