使用 NGINX 反向代理重寫 OwnCloud Docker 鏡像上的路徑一半工作
因此,我試圖通過 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/; }
注意location和proxy_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/