app api的nginx重写规则

时间:2017-08-13 07:09:27

标签: nginx

我对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/;
}

但我也无法做到这一点。

2 个答案:

答案 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的更多信息,请阅读以下文档:

http://nginx.org/en/docs/http/ngx_http_core_module.html

http://nginx.org/en/docs/http/ngx_http_upstream_module.html

答案 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();
    }

那就是它。 无需添加查询参数,默认情况下会复制它们。