我目前有一个 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 请求代理到我的后端服务器吗?谢谢。