首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Nginx 配置 SSL 模塊實現 HTTPS 訪問完整教程

     編輯:PHP 相關知識

Nginx 配置 SSL 模塊實現 HTTPS 訪問完整教程

Nginx 默認未編譯 SSL 模塊,需在編譯時指定 --with-http_ssl_module 參數,並依賴 OpenSSL 庫。本文記錄從生成自簽證書到 Nginx 配置 HTTPS、HTTP 強制跳轉的完整步驟。

一、編譯安裝帶 SSL 模塊的 Nginx

./configure --with-http_ssl_module
make && make install

確保系統已安裝 libssl-dev(Ubuntu/Debian)或 openssl-devel(CentOS)開發包。

二、生成自簽 SSL 證書

進入 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 配置啟用 HTTPS

編輯 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 訪問。

四、配置 HTTP (80 端口) 強制跳轉 HTTPS (443 端口)

添加另一個 server 塊監聽 80 端口並重寫:

server {
    listen 80;
    server_name www.yourdomain.com;
    rewrite ^(.*) https://$server_name$1 permanent;
}

permanent 返回 301 永久重定向,利於 SEO。

五、生產環境建議

  • 使用 CA 機構簽發的正規證書(如 Let's Encrypt 免費證書)替換自簽證書
  • 配置 SSL 協議版本與加密套件:ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5;
  • 啟用 HSTS:add_header Strict-Transport-Security "max-age=31536000";
  • 配置 OCSP Stapling 提升握手性能

總結

Nginx 支持 HTTPS 需編譯 SSL 模塊、生成證書鑰對、配置 server 塊監聽 443 端口並指定證書路徑。結合 80 端口重定向、現代 SSL 協議配置與 HSTS,可構建安全合規的 HTTPS 服務。生產環境務必使用受信任 CA 證書。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved