我目前在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的最佳方法是什么?
答案 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;
}