nginx:使用 proxy_pass 附加到代理 URL

nginx:使用 proxy_pass 附加到代理 URL

我正在處理一些遺留問題,我必須重新配置託管基於 PHP 的應用程式的伺服器。其中一項決定是從 Apache 遷移到 Nginx。

現在應用程式託管兩種回應;

/some/path -> HTML templates
/api/some/path -> JSON

該應用程式基於 Laravel。現在,我有兩台虛擬主機,my.app.com並且api.app.com.我認為一個不錯的解決方案是將api.app.com請求代理到請求路徑前面my.app.com/api所以;

GET api.app.com/user -> NGINX PROXY -> my.app.com/api/user

我不是 Nginx 設定的專家,我認為這應該有效:

location / {
    proxy_pass http://my.app.com:8888/api;
    proxy_set_header X-Real-IP $remote_addr;
}

這個想法是為了確保嘗試 GET 的人api.app.com/something實際上得到了回應,my.app.com/api/something 但這是行不通的。我不斷從應用程式中收到異常,說在路線中找不到路徑。

誰能告訴我這是怎麼回事?

答案1

來自的提示https://serverfault.com/a/586607

location ~ /(?<path>.*) {
    proxy_pass http://my.app.com:8888/api/$path;
    proxy_set_header X-Real-IP $remote_addr;
}

相關內容