如何配置 Nginx 作爲 Jenkins 的反向代理並啓用 SSL 加密

在開始之前,請先確認您已經安裝了 Nginx 和 Jenkins,並且有權限管理它們的設定檔案。以下是如何將 Nginx 配置為 Jenkins 的反向代理並啟用 SSL 加密的步驟指南:

1. 生成自簽署憑證

如果您不打算使用受信任的憑證機構(CA)發出的憑證,那麼您可以選擇生成一對自簽署的私鑰與憑證。這通常適用於開發環境或內部部署的情況。

openssl req -newkey rsa:4096 -nodes -sha256 -keyout /etc/nginx/ssl/nginx-selfsigned.key -x509 -days 365 -out /etc/nginx/ssl/nginx-selfsigned.crt

2. 配置 Nginx 來作為 Jenkins 的反向代理

編輯您的 `/etc/nginx/sites-available/default` (或其他您使用的配置文件),添加如下所示的內容:

# Redirect all traffic to HTTPS
server {
listen 80;
return 301 https://$host$request_uri;
}

# HTTPS server configuration for Jenkins behind Nginx
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server ipv6only=on;

root /var/lib/jenkins/; # Adjust this path as needed
index index.html;

# Use the self-signed certificate generated above or a trusted CA cert
ssl on;
ssl_certificate /etc/nginx/ssl/nginx-selfsigned.crt;
ssl_certificate_key /etc/nginx/ssl/nginx-selfsigned.key;

location / {
proxy_pass http://localhost:8080; # Jenkins listens by default on port 8080
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}

保存並退出後,重新加載 Nginx 服務以應用更改:

systemctl reload nginx

3. 驗證配置

您可以使用瀏覽器打開您的 Jenkins URL (`https://`),應該會看到 Jenkins 的登錄頁面。如果出現錯誤訊息,請檢查您的 Nginx 日誌 (`/var/log/nginx/*.log`) 以查找可能的問題。

4. 更新 Jenkins 網址

一旦 Nginx 正確配置且 Jenkins 可訪問,您可能需要更新 Jenkins 中的網址設置。這樣可以保證所有 Jenkins 的連結都會指向到正確的位置。進入 Jenkins 的「系統管理」 > “標識” > “全站URL”,輸入您 Jenkins 的完整 URL (例如:`https:///jenkins`),然後儲存變更。

5. 考慮使用 Let’s Encrypt 獲得受信任的憑證

對於生產環境來說,使用由 Let’s Encrypt 等提供商簽名的憑證是最佳實踐。這樣可以確保您的網站具有更高的安全性和用戶信任度。要通過 Let’s Encrypt 獲取憑證,您可以選擇使用 Certbot 等工具來自動化這個過程。

總之,透過以上幾個簡單的步驟,您就可以成功地將 Nginx 配置為 Jenkins 的反向代理,同時也啟用了 SSL 加密,保護了您 Jenkins 服務器的資料傳輸安全性。記得定期監控和維護這些服務,以保持其正常運行。

为您推荐