
- Docker 教程
- Docker - 首頁
- Docker - 概述
- Docker - 在 Linux 上安裝
- Docker - 安裝
- Docker - Hub
- Docker - 映象
- Docker - 容器
- Docker - 倉庫
- Docker - Compose
- Docker - 使用容器
- Docker - 架構
- Docker - 層
- Docker - 容器與主機
- Docker - 配置
- Docker - 容器與 Shell
- Docker - Dockerfile
- Docker - 構建檔案
- Docker - 公共倉庫
- Docker - 管理埠
- Docker - Web 伺服器
- Docker - 命令
- Docker - 容器連結
- Docker - 資料儲存
- Docker - 卷
- Docker - 網路
- Docker - 安全
- Docker - 工具箱
- Docker - 雲
- Docker - 構建雲
- Docker - 日誌
- Docker - 持續整合
- Docker - Kubernetes 架構
- Docker - Kubernetes 的工作原理
- Docker - 生成式 AI
- Docker - 託管
- Docker - 最佳實踐
- Docker 設定服務
- Docker - 設定 Node.js
- Docker - 設定 MongoDB
- Docker - 配置 NGINX
- Docker - 設定 ASP.Net
- Docker - 設定 MySQL
- Docker - 設定 Go
- Docker - 設定 Rust
- Docker - 設定 Apache
- Docker - 設定 MariaDB
- Docker - 設定 Jupyter
- Docker - 設定 Portainer
- Docker - 設定 Rstudio
- Docker - 設定 Plex
- Docker 設定 - Flame
- Docker 設定 - PostgreSql
- Docker 設定 - Mosquitto
- Docker 設定 - Grafana
- Docker 設定 - Nextcloud
- Docker 設定 - Pawns
- Docker 設定 - Ubuntu
- Docker 設定 - RabbitMQ
- Docker - 設定 Python
- Docker - 設定 Java
- Docker - 設定 Redis
- Docker - 設定 Alpine
- Docker - 設定 BusyBox
- Docker 設定 - Traefik
- Docker 設定 - WordPress
- Docker 有用資源
- Docker - 快速指南
- Docker - 有用資源
- Docker - 討論
Docker - 配置 NGINX
NGINX 是一款開源、高效能的 Web 伺服器和反向代理,主要用於靜態內容交付和作為負載均衡器。由於其效率、可靠性和靈活性,它目前是現代 Web 基礎設施的基石之一。
Docker 是一個平臺,它在構建、交付和執行稱為容器的隔離環境中的應用程式方面提供了極大的幫助。將 NGINX 與 Docker 結合使用可以帶來許多好處,包括一致的部署、更好地利用系統資源以及調整開發工作流程。
在本章中,我們將瞭解如何將 NGINX 應用程式 Docker 化。我們將從 NGINX 的最簡單設定開始,然後逐步提升到更高級別的應用。
先決條件
在學習如何將 NGINX 應用程式 Docker 化之前,請確保您擁有以下內容:
- 已安裝 Docker - 在您的系統上安裝並執行 Docker。
- Docker 的基本知識 - 瞭解與 Docker 相關的概念,例如映象和容器,以及它們相關的命令,可能會很有用。
- 文字編輯器 - 這將用於設定配置檔案。
我們將使用官方的 NGINX Docker 映象作為我們映象的基礎。
NGINX 官方映象
NGINX 官方映象是一個預構建的 Docker 映象,它包含 NGINX、其 Web 伺服器和建立環境所需的 NGINX 包的所有依賴元件。Docker Hub 提供了它,對於那些希望在容器內開始測試 NGINX 的人來說非常有用。

NGINX 官方映象的關鍵特性
- 預配置的 NGINX - 此映象預配置了 NGINX 的預設設定,從而節省了您入門的時間。
- 更新頻繁 - 該映象會隨著最新的 NGINX 版本和安全補丁保持更新。
- 基礎映象選項 - 考慮到專案的要求,提供了不同的基礎映象選項,例如 Alpine 或 Debian。
- 社群支援 - 一個活躍的社群支援併為該映象做出貢獻。
透過使用官方 NGINX 映象,您可以獲得一個可靠且維護良好的基礎,用於所有基於 NGINX 的應用程式。
在下一節中,我們將瞭解如何使用此映象來執行一個基本的 Web 伺服器。
使用 Docker 執行基本的 NGINX Web 伺服器
讓我們嘗試使用官方映象執行一個基本的 NGINX Web 伺服器。這將幫助您瞭解如何在 Docker 容器中部署 NGINX。
要啟動 NGINX 容器,您可以使用以下 Docker run 命令:
$ docker run -d -p 80:80 nginx

上述命令將執行以下操作:
- docker run - 提示 Docker 執行一個容器。
- -d - 它將在分離模式下執行容器,這意味著它將在後臺執行。
- -p 80:80 - 此選項允許您將容器的 80 埠對映到主機機的 80 埠。這允許您從瀏覽器訪問 Web 伺服器。
- nginx - 這是要使用的 NGINX 映象。
Docker 容器啟動並執行後,您可以嘗試透過開啟 Web 瀏覽器並導航到https://來訪問預設的 NGINX 歡迎頁面。

您可以使用以下命令來檢查正在執行的容器和正在使用的映象的狀態。
$ docker images $ docker container ls

在下一節中,讓我們瞭解如何透過新增我們自己的 HTML 內容來自定義 NGINX 伺服器。
新增自定義 HTML
既然我們已經運行了一個基本的 NGINX 伺服器,讓我們看看如何提供自定義HTML內容。為此,主要有兩種方法。讓我們分別舉例說明。
方法 1:掛載本地目錄
此方法特別適用於開發和測試目的。在這種方法中,您可以將包含 HTML 檔案的本地目錄掛載到容器內的 NGINX 預設文件根目錄。以下是操作方法:
步驟 1:建立本地目錄
首先,在主機上建立一個目錄來儲存您的 HTML 檔案。例如:
$ mkdir my-website
步驟 2:建立 HTML 檔案
接下來,在此名為my-website目錄中建立一個基本的index.html檔案,其中包含您所需的內容。您可以使用以下 HTML 檔案作為示例。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>TutorialsPoint</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous"> </head> <body> <header class="bg-primary text-white py-3"> <div class="container"> <h1>Welcome to TutorialsPoint</h1> </div> </header> <div class="container mt-4"> <h2>Docker Tutorial</h2> <p>This is the best tutorial for learning Docker.</p> <div class="row"> <div class="col-md-6"> <h3>Docker for beginners</h3> <p>Learn basic Docker concepts</p> </div> <div class="col-md-6"> <h3>Advanced Docker for Professionals</h3> <p>Learn advanced Docker concepts</p> </div> </div> </div> <footer class="bg-dark text-white py-3"> <div class="container"> <p>© 2023 My Website</p> </div> </footer> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" crossorigin="anonymous"></script> </body> </html>
使用卷掛載執行 NGINX 容器:
$ docker run -d -p 80:80 -v /path/to/my-website:/usr/share/nginx/html nginx
您需要將/path/to/my-website替換為您本地機器中包含 index.html 檔案的目錄的實際路徑。

步驟 3:訪問您的網站
開啟 Web 瀏覽器並導航到https://:80。您應該會看到index.html檔案的內容。

說明
- 在這裡,我們使用了 -v 標誌將我們的本地目錄(/path/to/my-website)掛載到容器內的/usr/share/nginx/html目錄。
- 如果我們對本地目錄進行任何更改,它也會反映在容器中。這允許快速進行開發迭代。
方法 2:構建自定義 NGINX 映象
對於生產環境,建議使用包含 HTML 檔案的 Dockerfile 建立自定義 NGINX 映象。這將確保一致性和可重複性。以下是操作方法:
步驟 1:建立 Dockerfile
在包含 index.html 檔案的同一目錄中,建立一個名為 Dockerfile 的檔案,幷包含以下內容:
FROM nginx:alpine COPY index.html /usr/share/nginx/html/

步驟 2:構建映象
$ docker build -t my-nginx .

步驟 3:執行容器
$ docker run -d -p 80:80 my-nginx

說明
- 在這裡,我們使用nginx:alpine映象建立了一個新的 Docker 映象。
- COPY指令會將您的 HTML 檔案複製到映象內的 NGINX 預設文件根目錄。
- 構建映象後,它將建立一個名為my-nginx的新映象,其中包含您的自定義 HTML 檔案。

您可以按照這兩種方法中的任何一種,使用 NGINX Docker 容器提供自定義 HTML 內容。
在下一節中,讓我們學習如何設定反向代理伺服器。
什麼是反向代理伺服器?
反向代理伺服器是客戶端和多個伺服器之間的閘道器,它接收傳入請求並根據預定義規則將其傳送到最合適的後端伺服器。這提供了以下幾個好處:
- 負載均衡 - 在多個伺服器之間平衡適當的負載和流量,以提高效能並確保可靠性。
- 安全 - 透過充當防火牆並過濾掉惡意請求來保護後端伺服器免受惡意請求的攻擊。
- 快取 - 透過本地儲存以前訪問的內容來提高應用程式的效能。
- SSL 終止 - 處理 SSL/TLS 加密,減輕後端伺服器的工作負載。
使用 NGINX 設定反向代理
NGINX 是建立反向代理伺服器非常受歡迎的選擇,因為它具有高效能和靈活性等特性。讓我們討論一個關於如何將 NGINX 配置為反向代理的基本示例:
先決條件
- NGINX 已安裝並正在執行。
- 一個或多個後端伺服器及其各自的 IP 地址和埠。
步驟 1:訪問 NGINX 容器的 bash
$ docker run -it nginx bash

步驟 2:建立新的 NGINX 配置檔案
在/etc/nginx/sites-available目錄中建立一個新的配置檔案(例如,my_reverse_proxy),內容如下:
server { listen 80; server_name your_domain.com; location / { proxy_pass http://backend_server_ip:backend_server_port; } }
您需要將your_domain.com、backend_server_ip和backend_server_port替換為您自己的實際值。
步驟 3:建立符號連結
接下來,在sites-enabled目錄中建立指向配置檔案的符號連結:
sudo ln -s /etc/nginx/sites-available/my_reverse_proxy /etc/nginx/sites-enabled/
步驟 4:測試並重新啟動 NGINX
檢查配置錯誤:
sudo nginx -t
如果沒有錯誤,請重新啟動 NGINX:
sudo systemctl restart nginx
說明
- server塊定義了一個監聽 80 埠的虛擬主機。
- listen指令指定要監聽的埠。
- server_name指令設定此伺服器塊的域名。
- location /塊匹配所有請求。
- proxy_pass指令將請求轉發到指定的後端伺服器。
您可以按照這些步驟並根據您的具體需求自定義配置,以使用 NGINX 設定反向代理伺服器。
結論
在本章中,您學習瞭如何以最簡單的方式將 NGINX Web 伺服器容器化,包括執行簡單的 Web 伺服器、建立自定義映象以及設定複雜的反向代理配置。
您現在具備了構建可擴充套件、安全、高效能 Web 應用程式所需的技能。無論是小型專案還是大型部署,將 NGINX Docker 化都為您提供了 Web 基礎設施的可靠起點。
關於如何將 NGINX 應用程式 Docker 化的常見問題
1. 如何在 Docker 中為反向代理配置 NGINX?
透過定義上游伺服器併為您的應用程式建立伺服器塊來設定 NGINX 作為反向代理。使用 proxy_pass 指令將請求傳遞到正確上游伺服器。確保適當的埠對映和後端服務的正確網路配置。
2. 如何在 Docker 中的 NGINX 中處理 SSL/TLS 證書?
將 SSL/TLS 證書儲存在 Docker 容器內的卷中;配置 NGINX 以使用它們。考慮將 Let's Encrypt 等工具整合到 Docker 設定中,以實現自動證書管理。
3. 如何在 Docker 容器中排查 NGINX 問題?
使用 Docker 提供的日誌來檢查可用於 NGINX 的日誌。驗證 NGINX 配置檔案。使用除錯工具,檢查當前正在執行的容器中 NGINX 程序。考慮使用容器編排系統以實現更好的管理和故障排除。