将所有请求代理到后端服务器

将所有请求代理到后端服务器

我目前有一个 Angular 应用,它从 Symfony 后端获取数据。在开发时,我使用ng serve开发服务器代理系统将 和 路由重定向/api到后端服务器,这很有效。/oauth-token/media

现在我想将应用程序部署到 Web 服务器,我设置了一个 Nginx 服务器,用于提供由构建的 Angular 应用程序生成的静态文件。由于开发服务器不再用于代理请求,我必须通过 Nginx 的 conf 文件执行此操作,以便拥有一个功能齐全的反向代理。

我只需要这样:如果我请求类似的东西GET http://localhost/api/products/1,这个请求将被代理到GET http://localhost:81/api/products/1。对于所有其他请求方法,这应该相同:POST、PUT、PATCH 等。

问题是我似乎无法编写适合此用例需求的配置文件。我得到的最好结果是 302 或 405 响应。

这是我当前拥有的 conf 文件:

server {
    server_name localhost;
    root /var/www/webapp;

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

    location ~ ^/(?:oauth-token|api|media)/ {
        proxy_pass http://localhost:81;
    }
}

后端与前端托管在同一台服务器和 nginx 实例上,但位于不同的端口上(端口 81 而不是 80)。

我尝试将我的位置块分成每个路线的 3 个独立块,以防我的正则表达式或代理传递错误,但我得到了相同的结果:

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

    location /oauth-token/ {
        proxy_pass http://localhost:81/oauth-token/;
    }

我还尝试删除代理传递 URL 末尾的斜杠,以查看是否是该问题,但无济于事。

我尝试按照在 Server Fault 上的其他帖子中找到的建议进行操作,但遗憾的是,没有一个对我有用。

您能帮我配置这个文件,以便这些 API 请求代理到我的后端服务器吗?谢谢。

相关内容