我有一个基于NodeJS + Express / AngularJS构建的Web应用程序。
AngularJS $routeProvider
是html5
模式,这意味着URL中没有index.html或#。
我想使用nginx来:
- 将
/api
代理到我的NodeJS应用程序 - 将
/
中所有请求重定向到/index.html
- 将
/app
中所有请求重定向到/app/index.html
示例 /support
:/
应重写为index.html
,然后Angular $routeProvider处理support
路由并呈现SupportController
/app/login
:/app/
应重写为/app/index.html
,然后Angular $routeProvider处理login
路由并渲染LoginController
/api/auth/login
:/api/*
应始终被代理重定向到http://localhost:3000/
,因为在/api
下没有静态文件可供使用
限制式
问题是,使用类似于以下内容的内容重定向到API:
location / {
try_files $uri @backend;
}
与AngularJS不兼容的index.html重写:
location / {
try_files $uri $uri/ /index.html =404;
}
location /app/ {
try_files $uri $uri/ /app/index.html =404;
}
如果我指定了/api
位置,Nginx会用/
位置覆盖它...
我能在这里做什么?
2条答案
按热度按时间ecfsfe2w1#
我认为这应该是一个简单的配置
如果你解释的是正确的,那么上面的配置应该可以
ncgqoxb02#
我找到了正确的配置,我想我在这里发布之前测试过它,但是由于nginx是在
http://locahost:3000/api/login/auth
上重定向https://example.com/api/login/auth
,而不是http://locahost:3000/login/auth
,我从Express得到了404,所以我认为它们来自Nginx...我只是“愚蠢的傻瓜...”谢谢你的帮助Tarun!
下面是一个很好的配置(这是非常基本的):