我怎样才能让 nginx 在代理 root 的同时将所有 URL(当然除了 root)重定向到 root?
我们有一个 angular nodejs 应用程序,我们正尝试从生成的 dist 文件夹中获取构建的输出,并运行 nodejs 的 serve ( npx serve "dist/app"
) 以在部署环境中运行它。我们遇到的问题是我们在应用程序中使用了 angular 路由,因此http://app/nested/url应该只从 HTTP 返回根 URL 内容,然后让浏览器整理路径和查询。我正在尝试使用 nginx 配置来实现这一点。
到目前为止,它还没有起作用;在尝试了几个小时不同的解决方案之后,我从其他 SO / SF 答案中尝试过的所有方法要么只是通过路径连接的代理(我们得到 404),要么根本身失败。
以下是我希望实现的功能:
server {
listen 880;
listen [::]:880;
location ^~ /([^/]+) {
return 302 /;
}
location ^~ / {
proxy_pass http://myserver:8081/;
}
.. 但调用http://我的服务器:880/login仍然只是返回 404,而http://服务器:880/通过代理可以正常工作,就好像第一个位置块不存在一样。我还尝试过交换声明的顺序,不确定这是否重要,但它就是会破坏它。
测试/原型设计适用于 Windows 的 nginx,将部署于AWS Beanstalk(带有代理配置的nodejs)。
抱歉,我愚蠢地误判了一些测试,我以为它“只是失败了”,但实际上它正在运行,只是所有依赖项(.js 文件、图像、css 文件等)没有加载,因为它们被 catch-all 捕获了。真是的。
答案1
尝试这个:
location = / {
proxy_pass http://myserver:8081/;
}
location / {
return 302 /;
}