Nginx

使用 NGINX 反向代理重寫 OwnCloud Docker 鏡像上的路徑一半工作

  • May 13, 2018

因此,我試圖通過 nginx https 反向代理後面的 docker 映像執行 OwnCloud 的實例,並且需要通過反向代理重寫路徑,而不是去https://my-server/獲取對於 OwnCloud,您可以使用https://my-server/cloud來訪問它。

我目前的反向代理位置塊如下所示:

location  /cloud {
 rewrite /cloud/(.*) /$1  break;
 proxy_pass         http://localhost:8080;
 proxy_redirect     off;
 proxy_set_header   Host $host;
}

但這只是成功的一半。當我導航到 htts://my-server/cloud 時,我收到一個 OwnCloud 生成的 404 錯誤,然後如果我點擊“帶我回到 OwnCloud”,它會將我重定向到https: //my-server/index.php導致 nginx 級別 404,因為重定向應該轉到https://my-server/cloud/index.php

我想我可能會被水洗,需要修改 OwnCloud 配置,以便它返回附加了 /cloud 的連結,但我不知道如何通過 docker 圖像來做到這一點。感謝您對此的任何幫助。

我可能會做這樣的事情:

location  /cloud/ {
 proxy_pass         http://localhost:8080/;
}

注意locationproxy_pass指令末尾的斜杠**/**

$$ 1 $$. 這類似於 rsync 的工作方式,例如,如果尾部斜杠存在,它將替換之後的所有內容。在您的情況下: http://proxy/cloud將向上游請求,http://upstream:8080/並且 OwnCloud 正在使用的任何子目錄,例如,將被請求為: http://proxy/cloud/example並請求為http://upstream:8080/example 如果您在代理到上游之前擷取 /cloud 目錄,則不需要重寫。

並刪除其他設置,因為您不需要它們,除非您將標頭用於某些內容,否則我認為重定向對您的情況沒有任何影響。

$$ 1 $$來源: https ://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

引用自:https://serverfault.com/questions/912026