教程 nginx tutorial

HTTPS 与 SSL 证书

HTTPS 可以为网站提供加密传输,防止数据被窃取或篡改。Nginx 支持多种 SSL 证书配置方式。

一、生成自签名证书

bash
openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 \
    -keyout /etc/nginx/ssl/nginx.key \
    -out /etc/nginx/ssl/nginx.crt

`

  • nginx.key:私钥
  • nginx.crt:证书文件

生产环境建议使用受信任的 CA 证书,如 Let’s Encrypt。

二、Nginx HTTPS 配置示例

nginx
server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;

    root /var/www/html;
    index index.html index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

三、HTTP 跳转到 HTTPS

nginx
server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}
  • 301:永久重定向,保证用户访问 HTTPS
  • 可结合 HSTS 强制浏览器仅使用 HTTPS

四、安全优化建议

  1. 禁用不安全协议(如 SSLv2/SSLv3、TLS1.0)
  2. 使用强加密套件
  3. 定期更新证书,避免过期
  4. 开启 HSTS 和 OCSP Stapling,提高安全性与性能

通过配置 HTTPS 与 SSL 证书,Nginx 可以为网站提供安全加密传输,保障用户数据和访问安全。