OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

如何配置 OpenLiteSpeed 以反向代理程式到位於我的內部網路上的 Nextcloud?

令人驚訝的是,在 Habré 上搜尋 OpenLiteSpeed 沒有得到任何結果! 我趕緊糾正這個不公平的現象,因為LSWS是一個值得使用的Web伺服器。 我喜歡它的速度和精美的網路管理介面:

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

儘管 OpenLiteSpeed 最著名的是作為 WordPress“加速器”,但在今天的文章中,我將展示它的一個相當具體的應用。 即請求的反向代理。 您認為使用 nginx 比較常見嗎? 我會同意的。 但我們真的愛上了LSWS!

代理沒問題,但是在哪裡呢? Nextcloud 也是一項同樣出色的服務。 我們使用 Nextcloud 建立私有「檔案共享雲端」。 對於每個客戶端,我們使用 Nextcloud 分配一個單獨的虛擬機,並且我們不希望將它們暴露在「外部」。 相反,我們透過通用反向代理來代理請求。 該解決方案允許您:
1) 從網路上刪除儲存客戶端資料的伺服器,並且
2)保存IP位址。

該計劃如下:

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

很明顯,該圖被簡化了,因為組織 Web 服務基礎架構不是今天文章的主題。

另外,在本文中,我將省略 nextcloud 的安裝和基本配置,特別是因為 Habré 上有關於此主題的資料。 但我肯定會向您展示一些設置,如果沒有這些設置,Nextcloud 將無法在代理後面工作。

鑑於:
Nextcloud 安裝在主機 1 上,並配置為透過 http(無 SSL)工作,只有一個本地網路介面和一個「灰色」IP 位址 172.16.22.110。
讓我們在主機 2 上配置 OpenLiteSpeed。它有兩個接口,一個是外部接口(查看 Internet),另一個是內部接口,其 IP 地址位於網絡 172.16.22.0/24
DNS名稱cloud.connect.link指向主機2的外部介面的IP位址

任務:
使用連結從互聯網獲取“https://cloud.connect.link' (SSL) 位於內部網路上的 Nextcloud 上。

  • 在 Ubuntu 18.04.2 上安裝 OpenLiteSpeed。

讓我們新增一個儲存庫:

wget -O— http://rpms.litespeedtech.com/debian/enable_lst_debain_repo.sh |須藤bash
命令和apt-get update更新

安裝,運行:

sudo apt-get install openlitespeed
sudo /usr/local/lsws/bin/lswsctrl 啟動

  • 讓我們設定一個最小的防火牆。

    sudo ufw 允許 ssh
    sudo ufw 預設允許傳出
    sudo ufw 默認拒絕傳入
    sudo ufw允許http
    sudo ufw 允許 https
    sudo ufw 允許來自 您的管理主機 到任意埠 7080
    sudo ufw啟用

  • 讓我們將 OpenLiteSpeed 配置為反向代理。
    讓我們為虛擬主機建立目錄。

    cd /usr/local/lsws/
    sudo mkdirc cloud.connect.link
    cd cloud.connect.link/
    sudo mkdir {conf,html,日誌}
    須藤 chown lsadm:lsadm ./conf/

讓我們從 LSWS Web 介面設定虛擬主機。
開啟網址管理 http://cloud.connect.link:7080
預設登入名稱/密碼:admin/123456

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

新增虛擬主機(虛擬主機 > 新增)。
新增時會出現錯誤訊息,提示設定檔遺失。 這是正常現象,可以透過點擊「點擊建立」來解決。

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

在「常規」標籤中,指定「文檔根」(儘管不需要,但如果沒有它,配置將無法啟動)。 如果未指定,網域將從虛擬主機名稱中獲取,我們稱之為網域名稱。

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

現在是時候記住我們不僅有一個網頁伺服器,還有一個反向代理。 以下設定將告訴 LSWS 代理什麼以及在哪裡代理。 在虛擬主機設定中,開啟外部應用程式標籤並新增 Web 伺服器類型的新應用程式:

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

我們註明姓名和地址。 您可以指定任意名稱,但您需要記住它;它將在後續步驟中有用。 該位址是 Nextcloud 在內網路的位址:

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

在相同的虛擬主機設定中,開啟上下文標籤並建立代理類型的新上下文:

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

指定參數:URI = /,Web 伺服器 = nextcloud_1(上一個步驟中的名稱)

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

重新啟動 LSWS。 只需從網頁介面中單擊即可完成此操作,奇蹟! (我體內的遺傳性老鼠帶因者說話)

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理
OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

  • 我們安裝憑證並配置https。
    獲得證書的程序 我們將忽略它並同意我們已經擁有它並且它與金鑰一起位於 /etc/letsencrypt/live/cloud.connect.link 目錄中。

讓我們建立一個「監聽器」(監聽器 > 新增),將其命名為「https」。 讓我們將其指向連接埠 443,並注意它將是安全的:

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

在 SSL 標籤中,指示金鑰和憑證的路徑:

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

「偵聽器」已創建,現在在「虛擬主機映射」部分中,我們將向其中新增虛擬主機:

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

如果LSWS僅代理一項服務,則配置即可完成。 但我們計劃使用它根據網域將請求傳遞給不同的「權威機構」。 所有網域都有自己的憑證。 因此,您需要轉到虛擬主機配置並再次在 SSL 選項卡中指定其金鑰和憑證。 將來,應該為每個新的虛擬主機執行此操作。

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

剩下的就是設定 url 重寫,以便將 http 請求傳送到 https。
(順便問一下,這種情況什麼時候結束?是時候讓瀏覽器和其他軟體預設切換到 https,必要時手動轉送到 no-SSL)。
開啟啟用重寫並記下重寫規則:

重寫條件 %{SERVER_PORT} 80
重寫規則 ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

由於一個奇怪的誤解,您無法使用通常的優雅重啟來應用重寫規則。 因此,讓我們不優雅地,而是粗略地、有效地重新啟動 LSWS:

sudo systemctl 重新啟動 lsws.service

為了讓伺服器監聽80端口,我們將建立另一個Listener。 我們將其稱為 http,指示第 80 個連接埠以及它將是非安全的事實:

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

與設定 https 偵聽器類比,讓我們將虛擬主機對應到它。

現在 LSWS 將監聽埠 80 並將請求從該連接埠傳送到 443,重寫 url。
最後,我建議降低 LSWS 日誌記錄級別,預設為「調試」。 在這種模式下,日誌會以閃電般的速度倍增! 對於大多數情況,警告等級就足夠了。 前往伺服器配置 > 日誌:

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

這樣就完成了OpenLiteSpeed作為反向代理的配置。 我們再次重新啟動 LSWS,請點擊連結 https://cloud.connect.link 我們看到:

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

為了讓 Nextcloud 讓我們進入,我們需要將網域 cloud.connect.link 加入到受信任的清單中。 讓我們去編輯config.php。 我在安裝 Ubuntu 時自動安裝了 Nextcloud,配置位於:/var/snap/nextcloud/current/nextcloud/config。
將 'cloud.connect.link' 參數加入 trust_domains 鍵:

'受信任的域' =>
數組(
0 =>'172.16.22.110',
1 => 'cloud.connect.link',
),

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

接下來,在同一組態中,您需要指定代理程式的 IP 位址。 請注意,該位址必須指定為 Nextcloud 伺服器可見的位址,即LSWS本機介面IP。 如果沒有此步驟,Nextcloud Web 介面可以運作,但應用程式未獲得授權。

'受信任的代理' =>
數組(
0 =>'172.16.22.100',
),

太好了,這樣我們就可以進入授權介面了:

OpenLiteSpeed 內部和外部的 Nextcloud:設定反向代理

問題解決了! 現在,每個客戶端都可以使用其個人 URL 安全地使用“文件雲”,包含文件的伺服器與互聯網分離,未來的客戶端將收到相同的所有內容,並且不會損害任何額外的 IP 位址。
此外,您可以使用反向代理來傳送靜態內容,但對於 Nextcloud,這不會顯著提高速度。 所以這個是可選的,也是可選的。

我很高興分享這個故事,我希望它對某人有用。 如果您知道解決這個問題的更優雅和有效的方法,我將不勝感激您的評論!

來源: www.habr.com

添加評論