Nginx 默認未編譯 SSL 模塊,需在編譯時指定 --with-http_ssl_module 參數,並依賴 OpenSSL 庫。本文記錄從生成自簽證書到 Nginx 配置 HTTPS、HTTP 強制跳轉的完整步驟。
./configure --with-http_ssl_module make && make install
確保系統已安裝 libssl-dev(Ubuntu/Debian)或 openssl-devel(CentOS)開發包。
進入 Nginx 配置目錄(如 /usr/local/nginx/conf),依次執行:
# 1. 生成私鑰(需輸入密碼) openssl genrsa -des3 -out server.key 1024 # 2. 生成證書簽名請求 (CSR) openssl req -new -key server.key -out server.csr # 3. 移除私鑰密碼(避免 Nginx 啟動需輸入密碼) cp server.key server.key.org openssl rsa -in server.key.org -out server.key # 4. 自簽證書(有效期 365 天) openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
編輯 nginx.conf 或站點配置文件,添加 server 塊:
server {
server_name YOUR_DOMAINNAME_HERE;
listen 443;
ssl on;
ssl_certificate /usr/local/nginx/conf/server.crt;
ssl_certificate_key /usr/local/nginx/conf/server.key;
}
重啟 Nginx:service nginx restart 或 nginx -s reload。此後可通過 https://YOUR_DOMAINNAME_HERE 訪問。
添加另一個 server 塊監聽 80 端口並重寫:
server {
listen 80;
server_name www.yourdomain.com;
rewrite ^(.*) https://$server_name$1 permanent;
}
permanent 返回 301 永久重定向,利於 SEO。
ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5;add_header Strict-Transport-Security "max-age=31536000";Nginx 支持 HTTPS 需編譯 SSL 模塊、生成證書鑰對、配置 server 塊監聽 443 端口並指定證書路徑。結合 80 端口重定向、現代 SSL 協議配置與 HSTS,可構建安全合規的 HTTPS 服務。生產環境務必使用受信任 CA 證書。