# Nginx HTTPS 設定 以下是教學範例,說明如何配置 Nginx 支援 HTTPS 並進行反向代理。 ## 基本設定 在配置 Nginx 前,請確保以下條件已滿足: 1. 安裝 Nginx。 2. 已申請並取得有效的 SSL 憑證(`<憑證路徑>` 和 `<私鑰路徑>`)。 - 通常我們會把憑證放在 `/etc/ssl/certs` 目錄下。 3. 確保後端服務正常運行(例如 Spring Boot)。 --- ## Nginx 配置檔案 以下為範例 Nginx 配置: ```nginx worker_processes 1; # 工作進程數量,建議與 CPU 核心數一致。 events { worker_connections 1024; # 每個工作進程的最大連接數。 } http { include mime.types; # 載入 MIME 類型定義。 default_type application/octet-stream; # 預設 MIME 類型。 sendfile on; # 啟用高效文件傳輸。 keepalive_timeout 65; # 保持連接的超時時間(秒)。 # HTTPS 服務設定 server { listen 443 ssl; # 啟用 HTTPS,監聽 443 端口。 server_name <你的域名>; # 定義服務器的域名。 # SSL 憑證路徑 ssl_certificate <憑證路徑>; # 替換為你的 SSL 憑證路徑。 ssl_certificate_key <私鑰路徑>; # 替換為你的 SSL 私鑰路徑。 # SSL 配置 # TLSv1.2 1.0 ssl_session_timeout 5m; # SSL 會話超時時間(分鐘)。 ssl_protocols TLSv1.2 TLSv1.3; # TLS(Transport Layer Security) 協議版本, ssl_ciphers HIGH:!aNULL:!MD5; # 定義安全加密套件。 ssl_prefer_server_ciphers on; # 優先使用服務器的加密套件。 # 靜態網站設定 location / { root <靜態文件路徑>; # 替換為你的網站文件路徑。 index index.html index.htm; # 設定預設首頁文件。 try_files $uri /index.html; # 若找不到文件則回退到 index.html。 } # API 反向代理 location /api/ { proxy_pass http://<後端服務地址>:<端口>/; # 替換為後端服務地址。要注意這樣的設定是指 http://<後端服務地址>:<端口>/api/ 被代理到 http://<後端服務地址>:<端口>/。就沒有 /api/ 這個路徑了。 proxy_set_header Host $host; # 將原始請求的 Host 標頭傳遞給後端服務。 proxy_set_header X-Real-IP $remote_addr; # 客戶端的真實 IP 地址傳遞給後端服務,設置在 X-Real-IP 標頭中。 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 傳遞所有代理的 IP 地址鏈。 proxy_set_header X-Forwarded-Proto $scheme; # 設置 X-Forwarded-Proto 標頭,傳遞請求的協議(HTTP 或 HTTPS)。scheme 就是協議名稱,http 或 https。 } # 自訂錯誤頁面(Optional) error_page 500 502 503 504 /50x.html; location = /50x.html { root <錯誤頁文件路徑>; # 替換為你的錯誤頁文件路徑。 } } } ``` > TLS 1.0: > 發布於 1999 年,是 SSL 3.0 的升級版本。 > 已知存在多個安全漏洞,如 POODLE 攻擊。 > 不再被認為是安全的,應避免使用。 > > TLS 1.1: > 發布於 2006 年,對 TLS 1.0 進行了小幅改進。 > 增加了對 CBC (Cipher Block Chaining) 模式的防護。 > 仍然存在一些已知的安全問題,逐漸被淘汰。 > > TLS 1.2: > 發布於 2008 年,是目前最廣泛使用的版本。 > 支持更強的加密算法和更安全的哈希函數。 > 增加了 AEAD (Authenticated Encryption with Associated Data)支持,如 GCM (Galois/Counter Mode)。 > 被認為是安全的,並且大多數現代應用程序都支持。 > > TLS 1.3: > 發布於 2018 年,是最新的版本。 > 簡化了握手過程,減少了延遲。 > 移除了不安全的加密算法和協議,如 RC4 和 CBC。 > 提供了更強的安全性和更好的性能。 > 推薦使用,特別是在需要高安全性和性能的應用中。 ## 設定步驟 1. **配置域名與 SSL 憑證** - 將 `<你的域名>` 替換為實際的域名。 - 確保憑證 (`<憑證路徑>`) 和私鑰 (`<私鑰路徑>`) 路徑正確。 2. **配置靜態文件與後端服務** - 確保靜態文件存放於 `<靜態文件路徑>`,並存在 `index.html`。 - 將 `<後端服務地址>` 和 `<端口>` 替換為後端服務的實際地址。 3. **配置完 Nginx config 重啟 Nginx** - 重啟 Nginx 服務。 ```bash ./nginx -s quit # 關閉 Nginx 服務 ./nginx -c /usr/local/nginx/nginx.conf # 使用指定配置文件啟動 Nginx ``` 4. **測試 HTTPS 服務** 使用瀏覽器訪問 `https://<你的域名>`,檢查是否能正常連線。 ###### tags: `Nginx` `HTTPS` `SSL` `反向代理` `Web 伺服器` `教學`
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.