我对nginx重写/重定向规则有疑问。
我有一个在app.example.com
上运行的应用,我想将所有点击此服务器的请求转发到另一个子域:api.example.com
我在此文件夹中包含所有与api相关的内容:/react-api
我设法让这个工作:
location ~ /react-api {
rewrite ^(.+)$ http://api.example.com$request_uri? permanent;
}
它在浏览器中运行良好,但是当我尝试在我的应用程序中运行它时,它不起作用。我认为它与301 redirect
权利这一事实有关?应用程序无法使用它?
如何解决这个问题?
感谢所有帮助!
更新
我试过了proxy_pass
location /react-api/(.*) {
proxy_pass http://api.example.com/$is_args$args/;
}
但我也无法做到这一点。
答案 0 :(得分:0)
您可以使用upstreams和proxy_pass作为解决方案
将api.example.com设置为上游。
upsteram api-server {
server api.example.com;
}
配置API位置以使用新的上游。
location ~ /react-api/(.*) {
proxy_pass api-server/$is_args$args
}
为了使API代理正常工作(这样的报头转发),还有一些要配置的东西。 有关nginx变量和upstrems的更多信息,请阅读以下文档:
答案 1 :(得分:0)
您只需要简单的代理通行证。
@Component({
selector: 'bills',
animations: [routerTransition('routeAnimations')],
template
})
export class BillsComponent implements OnInit {
bills: Observable<Bill[]>;
public result: any;
constructor(private dialogService: DialogService) {
console.log('constructed bills component');
this.bills = Bills.find({}).zone();
}
那就是它。 无需添加查询参数,默认情况下会复制它们。