在数字化时代,数据安全已成为网站运营的核心要素,HTTPS协议通过SSL/TLS加密传输数据,有效防止信息泄露、篡改,同时提升用户信任度和搜索引擎排名,作为全球最受欢迎的Web服务器之一,Nginx配置HTTPS证书是保障网站安全的基础操作,本文将详细介绍从证书获取到Nginx配置的全流程,帮助开发者快速实现网站HTTPS化。

获取SSL证书
配置HTTPS的前提是获取有效的SSL证书,证书类型分为免费和付费两种:免费证书推荐Let’s Encrypt,其自动化签发流程和开源特性适合个人与小企业;付费证书如DigiCert、GlobalSign则提供更高保障和品牌认证,适合商业网站,获取Let’s Encrypt证书可通过Certbot工具,它是EFF推出的免费证书管理工具,支持自动签发和续期,安装Certbot后,执行certbot certonly --nginx -d example.com(example.com替换为你的域名),工具会自动验证域名所有权并生成证书文件,默认存储在/etc/letsencrypt/live/example.com/目录下,包含fullchain.pem(证书链)和privkey.pem(私钥)。
修改Nginx配置文件
获取证书后,需编辑Nginx配置文件(通常位于/etc/nginx/sites-available/default或自定义配置文件),启用HTTPS监听,在server块中添加以下关键配置:
server {
listen 443 ssl http2; # 监听443端口,启用HTTP2提升性能
server_name example.com; # 替换为你的域名
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # 证书链路径
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # 私钥路径
# SSL协议优化,仅启用安全版本
ssl_protocols TLSv1.2 TLSv1.3;
# 加密套件配置,优先使用ECDHE和AES-GCM算法
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers off; # 客户端优先加密套件
# 可选:启用HSTS,强制浏览器使用HTTPS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
# 其他网站配置(如根目录、index文件等)
location / {
root /var/www/html;
index index.html index.htm;
}
} 配置HTTP自动跳转HTTPS
为确保所有访问都通过HTTPS,需将80端口的HTTP请求重定向至443端口,在Nginx配置文件中新增server块:

server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri; # 永久重定向至HTTPS
} 测试与重启服务
配置完成后,先通过nginx -t检查语法是否正确,若无错误则执行systemctl restart nginx重启服务,访问https://example.com,若浏览器地址栏显示锁形图标,说明HTTPS配置成功,可通过openssl s_client -connect example.com:443 -servername example.com命令测试SSL连接详情,或使用SSL Labs的SSL Test工具进一步验证配置安全性。
FAQs
配置HTTPS后,网站访问出现“证书不可信”提示怎么办?
答:首先检查证书文件路径是否正确,确保ssl_certificate和ssl_certificate_key指向完整的证书链和私钥文件,其次确认证书是否过期(Let’s Encrypt证书有效期为90天,可通过certbot renew --dry-run测试自动续期功能),若为自签名证书,需在客户端手动导入信任;若为权威机构证书,确认域名是否与证书中的“Common Name”或“Subject Alternative Name”匹配。
如何为Nginx配置多域名HTTPS?
答:为每个域名单独创建server块,分别指定对应的证书路径和域名。

server {
listen 443 ssl;
server_name example1.com;
ssl_certificate /etc/letsencrypt/live/example1.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example1.com/privkey.pem;
# 其他配置...
}
server {
listen 443 ssl;
server_name example2.com;
ssl_certificate /etc/letsencrypt/live/example2.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example2.com/privkey.pem;
# 其他配置...
} 若需通配符证书(如*.example.com),可在Let’s Encrypt中通过DNS验证方式获取,然后在Nginx中统一配置通配符证书路径。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复