使用NGINX Proxy Manager簡單虛擬主機管理

通過NGINX配置文件管理代理(Proxies)和虛擬主機(VHosts)在虛擬主機和網絡服務數量增加時會變得繁瑣。如何簡化這個過程呢?通過使用NGINX代理管理器(NPM).

繼續閱讀,學習如何使用NGINX代理管理器網絡控制台創建、管理和保護虛擬主機.

先決條件

本教程將進行實踐演示,如果您想跟隨進行,請確保您擁有以下東西:

  • A Linux machine to host NGINX Proxy Manager and the proxied webserver- This tutorial uses Fedora 35.
  • Docker用於運行容器-本教程使用Docker v20.10.12。如果您尚未安裝任何替代方案,請按照本教程安裝Docker。
  • Docker Compose用於自動設置代理管理器及其所需的其他內容。本教程使用版本1.29.2。請安裝Docker Compose以繼續閱讀本文。
  • 域名作為虛擬主機端點。本教程使用私有域名,testweb.com確保域名指向 Linux 主機。您也可以使用公開註冊的域名。
  • 為了保護虛擬主機,您必須擁有一個SSL憑證和憑證密鑰。如果還沒有,請先創建一個憑證及其相關的密鑰文件。

設置 NGINX Proxy Manager

NGINX Proxy Manager 不是您在操作系統上安裝的軟件包。相反,NPM 是一個您在 Docker 中部署的應用程式,這就是為什麼 Docker 和 Docker Compose 是主要要求的原因。

請按以下步驟開始設置您的 NGINX Proxy Manager。

1. 透過 SSH 或桌面環境(如果有)登錄到您的 Linux 伺服器。

2. 使用您喜歡的文本編輯器創建並打開一個名為 docker-compose.yml 的 YAML 文件,這裡使用 vi。

vi docker-compose.yml

3. 將以下代碼複製並粘貼到編輯器中。此代碼包含下載和設置最新 nginx-proxy-manager 映像的指令。保存並關閉文件以返回命令行。

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped #確保代理管理器在崩潰時能夠存活
    ports:
      #允許從主機機器訪問相應的容器端口
      - '80:80'
      - '81:81' #管理面板的端口
      - '443:443'
    volumes:
      #將以下容器目錄映射到主機上的相應目錄
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

4. 運行 docker-compose 根據指定的指令將容器後台啟動 (-d)。

docker-compose up -d
Running Docker Compose to set up NGINX Proxy Manager container

5. 執行以下命令確保容器正在運行。

docker ps

如果一切正常,您應該看到類似下面截圖的代理管理器容器的運行進程。

Listing running Docker containers

訪問管理面板

現在 NGINX Proxy Manager 應該正在運行。您現在可以訪問 NPM 管理面板進行初始管理員用戶設置。

1. 開啟瀏覽器視窗並導航至 http://<host_ip>:admin-ui-port>。為了方便起見,本教程使用隱含的本地主機代替 IP 地址,即 http://localhost:81,來啟動管理面板。

2. 使用初始默認憑據登錄,電子郵件地址為 [email protected],密碼為 changeme。

Logging in for the first time

3. 根據您的需求修改默認用戶帳戶。本教程保留全名和暱稱,僅將電子郵件更改為 [email protected]。點擊保存以保存用戶詳細信息。

Changing admin user default credentials

4. 在下面的更改密碼中輸入新的用戶密碼。輸入八個或更多字符的密碼,然後點擊保存。

Changing the default password

您應該可以在下面看到您對用戶帳戶所做的更改。

Viewing the user list in NGINX Proxy Manager

部署 Web 服務器

現在您已完成初始設置,下一步是為您的虛擬主機啟動 Web 服務器。按照本節中的步驟快速啟動使用 Docker Compose 的 Apache Web 服務容器。

在您先前在文本編輯器中創建的 docker-compose.yml 文件中打開它。將以下代碼附加到 docker-compose.yml 文件中

使用相同文件的優勢是,您可以通過將基於 httpd 的容器添加到名為 app2 的現有容器網絡中來修改現有容器網絡,而不是在獨立網絡中。

app2:
    #用於內部參考容器的自定義名稱。用於容器之間的網絡連接
    image: 'httpd:latest'
    restart: unless-stopped

文件內容應該如下截圖所示。保存文件並退出編輯器。

Adding a web server deployment directive

運行docker-compose在後台啟動容器(-d)。

docker-compose up -d

您應該收到類似下面截圖的反饋,確認第二個容器已創建。

Creating and starting the Web server with Docker Compose

創建新的虛擬主機

您現在擁有運行中的 Web 服務。本部分旨在通過 NGINX Proxy Manager 的發布端口實現對 Web 服務器的訪問。

1. 登錄到NGINX Proxy Manager的管理面板。

2. 點擊主機 —> 代理主機。

Creating a VHOST: Opening the Proxy Host card

3. 點擊添加代理主機以啟動為 Web 服務器創建虛擬主機。

Creating a VHOST: Adding a Proxy Host

4. 使用以下詳細信息填寫新代理主機表單來設置虛擬主機。

  • 域名:您的 Web 服務器將可訪問的域名。此示例使用testweb.com域。
  • 前向主機名稱 / IP: Web 伺服器的主機名稱或 IP 位址。由於本教學使用 Docker Compose 設定容器,僅需使用 app2 即可。輸入您在 docker-compose.yml 中提供的名稱。
  • 前向埠: Web 伺服器聆聽請求的埠。在這種情況下,您將使用埠 80,這是 Apache httpd 容器的預設公開埠。
  • 封鎖常見漏洞: 使用 NPM 設置的代理可以阻擋常見漏洞。啟用此選項。
  • 存取清單: 預先指定的清單,用於控制代理後面的 Web 伺服器的存取權。對於本教學,將選擇公開存取,以確保您可以通過代理訪問 Web 伺服器。

螢幕上的表單應與下方的截圖相匹配。填寫表單後,按 Save。

Adding the Proxy Host details

現在,您的列表上有一個代理主機。

List of proxy hosts

5. 最後,在新的瀏覽器分頁或視窗中導航至虛擬主機的 URL。對於本教學,URL 為 http://testweb.com。如果虛擬主機正常運作,您應該看到默認首頁。

Accessing the Webserver via the Proxy

供應 SSL 憑證

您已部署 Web 伺服器並確認它正在運行。然而,此時網站尚未擁有 SSL 憑證。雖然在運行內部私有網站時可能不需要 SSL 憑證,但在託管公共網站時則不能這樣。

為了確保您的網站連線是加密的,接下來您將在虛擬主機上安裝 SSL 憑證。別擔心,您將從 NGINX Proxy Manager 進行操作。但是,您應該已經擁有一個現有的 PEM 格式 SSL 憑證和憑證密鑰。

1. 從 NGINX Proxy Manager 管理面板中點擊 SSL 憑證選項卡。

Opening the SSL Certificates tab

2. 在右上角,點擊添加 SSL 憑證 —> 自定義。

Adding a custom SSL certificate

作為自定義憑證的替代方案,您可以直接選擇 Let’s Encrypt 來動態申請憑證。但是,這樣做要求您的網站和 DNS 記錄是公開的。否則,憑證獲取將失敗。

3. 請按照以下步驟填寫添加自定義憑證表單

  • 名稱: 在管理面板中憑證的人性化名稱。本教程使用名稱 Testweb Cert。
Provisioning SSL Certificates: Naming the certificate
  • 憑證密鑰: 此密鑰隨本教程中生成的憑證文件一起提供。

點擊瀏覽,然後導航至密鑰文件。

Provisioning SSL Certificates: Selecting the key file

雙擊密鑰文件。對於本教程,憑證密鑰的名稱為 mytesthttpd.key。

Provisioning SSL Certificates: Selecting the key file
  • 憑證: 憑證文件本身,可以是 .crt 或 .pem 格式。

點擊瀏覽,然後在文件瀏覽器中導航至您的憑證。

Provisioning SSL Certificates: Selecting the certificate file

雙擊憑證文件以打開它。對於本教程,憑證文件名稱為 mytesthttpd.pem。

Provisioning SSL Certificates: Selecting the certificate file

4. 填寫完所有三個欄位後,您的表單應該如下螢幕截圖所示。按“儲存”以提交自訂憑證。

此教程目前不使用中介憑證。現在暫時忽略該欄位。

Saving the SSL certificate

5. 現在,點擊主機 —> 代理主機。

Provisioning SSL Certificates: Applying the certificate to a Proxy Host

6. 點擊 三明治菜單圖示,然後點擊“編輯”。請注意,此時 SSL 欄位顯示為僅 HTTP

Editing a proxy Host

7. 在“編輯代理主機”視窗中選擇 SSL 選項卡,如下所示。從 SSL 憑證下拉選單中選擇您預設的憑證。本教程中為 Testweb Cert 如下截圖所示。

Selecting a certificate for a Proxy Host

8. 從 SSL 憑證下拉選單中選擇您之前添加的憑證。如下所示,要選擇的憑證名稱是 Testweb Cert。

Selecting a certificate for a Proxy Host

9. 啟用所有可用的增強 SSL 選項,如下截圖所示,然後點擊“儲存”

Force SSL 選項將強制或升級所有連接到 HTTPS,即使客戶端最初嘗試訪問僅支持 HTTP 的 URL。

Enabling enhanced SSL features

A word of warning with HSTS. As browsers will include the site on an internal inclusion list, your site will no longer work under non-SSL conditions. Therefore, make sure that you have everything set up the correct way first.

您會注意到 SSL 欄位的值已從“僅 HTTP”更改為“自訂”

Confirming changes in the SSL setting for a Proxy Host

10. 最後,在瀏覽器中打開一個新的標籤,再次訪問您的虛擬主機域。對於本教程,即 http://testweb.com。連接應自動升級為 HTTPS。

Testing HTTPS access with a browser

恭喜!您已完成使用 NGINX Proxy Manager 部署或保護虛擬主機。

添加 NGINX Proxy Manager 用戶

請提供您的原始文本。

Translated text:
如果您與團隊合作或期望其他人管理NPM中的虛擬主機,您將需要提供使用者訪問權限。在本部分中,您將擴展NPM管理,特別是在團隊環境中,通過創建使用者並分配角色和權限。

1. 在管理員面板首頁上點擊用戶

Extending NPM with Users: Opening the Users tab

2. 在用戶卡片的右上角點擊添加用戶

Adding a user

3. 在相應的字段中輸入用戶的全名(測試用戶),暱稱(testuser)和電子郵件([email protected]),然後點擊保存。

您正在創建的這個用戶將不是完整的管理員,所以請不要啟用管理員角色。相反,您將分配自定義權限。點擊保存以添加新用戶。

Adding user particulars

4. 設置您要授予該用戶的權限。在本教程中,新用戶將具有以下權限設置。

  • 只能查看由該用戶創建的項目。
  • 可以創建、編輯和刪除代理主機
  • 可以創建、編輯和刪除重定向主機
  • 不能查看404主機
  • 不能查看
  • 可以查看訪問列表
  • 可以創建、編輯和刪除SSL證書

權限集應該與下面的屏幕截圖類似。點擊保存以完成添加新用戶的步驟。

Saving the user’s permissions

5. 現在,點擊新用戶的選項菜單,然後點擊以該用戶身份登錄。此步驟將將當前用戶上下文切換為測試用戶。

Signing in as the new user

6. 從新用戶的角度探索管理員面板。 根據該用戶的權限,您應該看到較少的標籤和資源。

Confirming access permissions

結論

恭喜您完成了這個NGINX代理管理器教程。 您學會了通過GUI管理虛擬主機並通過創建用戶啟用協作! 您認為您將來會再次通過編輯手動配置文件來管理NGINX虛擬主機嗎?

進一步測試您的學習的一個想法。 為什麼不閱讀一下如何提供NGINX子域或多個域名但是,不要按照手動配置,而是應用您所學的知識,使用NGNIX代理管理器部署和配置虛擬主機。

Source:
https://adamtheautomator.com/nginx-proxy-manager/