2017-08-13 196 views
0

我有一個關於nginx重寫/重定向規則的問題。nginx重寫app api規則

我有一個是在app.example.com運行的應用程序,我希望轉發達到這個服務器到另一個子域中的所有請求:api.example.com

我有這個文件夾中的所有API相關的東西:/react-api

我設法得到這個工作:

location ~ /react-api { 
    rewrite ^(.+)$ http://api.example.com$request_uri? permanent; 
} 

它完全在瀏覽器中,但是當我嘗試在我的應用程序運行它,它不工作。我認爲這與301 redirect這個事實有關?該應用程序無法使用該功能?

我該如何解決這個問題?

感謝所有幫助!

UPDATE 我已經試過proxy_pass

location /react-api/(.*) { 
    proxy_pass http://api.example.com/$is_args$args/; 
} 

但我無法得到那個工作要麼。

+0

爲什麼這個問題標記爲'.htaccess'? – arkascha

+0

讓你的應用程序來處理重定向,或更好地讓你的應用程序請求api.example.com –

+1

@arkascha這是一個錯誤:) –

回答

0

你或許可以使用上行流和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

0

你只需要簡單的代理通。

location /rest-api/ { 
    proxy_pass http://api.example.com/rest-api/; 
} 

就是這樣。 不需要添加查詢參數,它們默認被複制。