有效地移动api



我目前在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的最佳方式是什么?

在本地调试相同的问题后,我发现我不能代理传递到一个域,而只能传递到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;
}

最新更新