Nginx 可直接配置 HTTPS 静态资源服务,作为 TLS 终止点处理加解密,无需后端框架;需准备 SSL 证书与私钥,配置监听 443 端口、指定证书路径、启用安全协议与响应头,并设置 root 目录、缓存及 HTTP 重定向。

直接用 Nginx 配置静态资源的 HTTPS 加密传输,核心是让 Nginx 作为 TLS 终止点,把加密解密工作扛下来,再以明文方式读取本地文件并返回。不需要后端服务参与,也不依赖 Python 或 Node.js 等应用层框架。
准备 SSL 证书文件
HTTPS 必须有证书和私钥。生产环境建议用 Let’s Encrypt 免费签发的可信证书;测试或内网可自签名,但浏览器会提示不安全。
- 若用 Let’s Encrypt:通过
certbot获取,证书通常存于/etc/letsencrypt/live/yourdomain.com/fullchain.pem(证书链)和privkey.pem(私钥) - 若自签名:执行以下命令生成(注意去掉密码,否则 Nginx 启动时会卡住)
openssl genrsa -out server.key 2048openssl req -new -x509 -key server.key -out server.crt -days 365 - 把两个文件放到统一目录,例如
/etc/nginx/ssl/,确保 Nginx 进程有读取权限
配置 HTTPS Server 块
在 nginx.conf 或站点配置文件(如 /etc/nginx/sites-enabled/static)中添加一个监听 443 端口的 server 块:
- 必须包含
listen 443 ssl http2;——启用 HTTPS 并支持 HTTP/2 提升加载速度 - 指定证书路径:
ssl_certificate /etc/nginx/ssl/server.crt;和ssl_certificate_key /etc/nginx/ssl/server.key; - 强制使用较新协议与强加密套件:
ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; - 加上安全响应头,比如
add_header Strict-Transport-Security "max-age=31536000" always;,让浏览器后续自动跳转 HTTPS
指向静态资源目录
在同一个 server 块里,用 location / 定义资源根路径:
-
root /var/www/static;表示请求https://example.com/logo.png将映射到服务器上的/var/www/static/logo.png - 加
index index.html;支持目录首页自动识别 - 推荐设置缓存策略:
expires 1h;或按文件类型分别控制,减少重复请求 - 如需支持跨域(比如前端从另一域名调用这些资源),加上
add_header Access-Control-Allow-Origin "*";(生产环境慎用通配符)
补充:HTTP 自动跳转 HTTPS
用户可能仍输入 http://,需强制重定向:
- 新增一个只监听 80 端口的 server 块:
server { listen 80; server_name example.com; return 301 https://$server_name$request_uri; } - 确保 DNS 已解析该域名,且防火墙放行 443 和 80 端口
- 配置完成后运行
nginx -t检查语法,再systemctl reload nginx生效
整个过程不涉及代码开发,纯靠 Nginx 配置完成。只要证书有效、路径正确、权限到位,静态资源就能走全加密通道交付。


















