2015-09-29 97 views
0

我目前擁有在http://example.com/api/v3/下運行的API,並且我想將這些API移動到位於http://exampleapi.com/v3的不同服務器。高效地移動API

我首先想到的關於nginx的創建位置塊來處理請求,例如:

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

但是,使用REST客戶端,該請求被接受的GET請求無法發佈。同樣的事情使用瀏覽器(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

在本地調試同一個問題後,我發現我無法將代理傳遞給域,但僅傳遞給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; 

} 
相關問題