有效地移动API

时间:2015-09-29 08:27:54

标签: api nginx

我目前在http://example.com/api/v3/下运行API,我想将API移至http://exampleapi.com/v3的其他服务器。

我首先考虑在nginx中创建一个位置块来处理请求,例如:

location ~*/api/(v[0-9]+/[a-zA-Z0-9_]+) {
    return 301 $scheme://exampleapi.com/$1;
}

但是,使用REST客户端,请求作为GET请求而不是POST接收。使用浏览器(Firefox)也是如此。

我尝试了代理通行证,但我无法使其正常运行。这就是我试过的:

location ~*/api/(v[0-9]+/[a-zA-Z0-9_]+) {
    proxy_pass      http://exampleapi.com/$1;
    # proxy_redirect  http://exampleapi.com/ /;
    proxy_read_timeout 60s;

    proxy_set_header          Host            $host;
    proxy_set_header          X-Real-IP       $remote_addr;
    proxy_set_header          X-Forwarded-For $proxy_add_x_forwarded_for;

}

我得到502或500。

实现移动API的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

在本地调试相同的问题之后,我发现我不能代理传递到域,而只能传递到IP地址,因为没有解析器来解析这个域。

因此,我为exampleapi.com创建了一个新的服务器块来侦听端口,并将代理传递给该端口,例如:

 location ~*/api/(v[0-9]+/[a-zA-Z0-9_]+) {
    proxy_pass      http://127.0.0.1:4545/$1;
    proxy_read_timeout 60s;

    proxy_set_header          Host            $host;
    proxy_set_header          X-Real-IP       $remote_addr;
    proxy_set_header          X-Forwarded-For $proxy_add_x_forwarded_for;

}