Nginx 如何对所有传入的API请求使用代理传递

Nginx 如何对所有传入的API请求使用代理传递,nginx,server,nginx-reverse-proxy,Nginx,Server,Nginx Reverse Proxy,我正在使用nginx设置一个服务器来托管我的网站,但是我的后端工作有问题。目前我只使用Restful api,并试图在nginx中使用ProxyPass来访问我的后端,但我必须为每个api端点添加一个位置。例如,我的后端服务器是从本地主机上的pm2运行的:5000,我的所有端点http://myip/api/(我的端点),如果我将nginx设置为如下所示: location / { try_files $uri $uri/ =404; }

我正在使用nginx设置一个服务器来托管我的网站,但是我的后端工作有问题。目前我只使用Restful api,并试图在nginx中使用ProxyPass来访问我的后端,但我必须为每个api端点添加一个位置。例如,我的后端服务器是从本地主机上的pm2运行的:5000,我的所有端点http://myip/api/(我的端点),如果我将nginx设置为如下所示:

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

        location /api {
                proxy_pass http://localhost:5000/api;
                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;
        }

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

它仍然不起作用。设置nginx以处理从前端到后端的所有请求的最佳方法是什么?谢谢大家!

当您使用
location/api{}
时,它将/api添加到后面的
proxy\u pass
中,因此您最终得到
http://localhost:5000/api/api

尝试仅使用根url,如下所示:

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

        location /api {
                proxy_pass http://localhost:5000/api;
                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;
        }

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

当您使用
location/api{}
时,它会将/api添加到后面的
proxy\u pass
中,因此您最终得到
http://localhost:5000/api/api

尝试仅使用根url,如下所示:

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

        location /api {
                proxy_pass http://localhost:5000/api;
                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;
        }

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