Nginx配置静态资源HTTPS访问本质是为域名启用SSL/TLS加密,关键四步:确认编译ssl模块、证书放对路径并设600权限、server块中listen 443 ssl且正确指定证书路径、另配80端口301跳转HTTPS。Nginx 配置静态资源的 HTTPS 访问,本质是为整个网站(含 HTML、CSS、JS、图片等静态文件)启用 SSL/TLS 加密,而不是单独给“静态资源”配证书。SSL 证书绑定的是域名和服务器,不是某类文件。只要 Nginx 正确监听 443 端口并加载证书,所有通过该 server 块服务的请求——包括静态资源——都会走 HTTPS。下面分四步讲清楚关键操作,直击常见卡点:
这是前提,缺了它,配置直接报错(比如 unknown directive "ssl_certificate")。
nginx -V 2>&1 | grep -i ssl,检查输出是否含 --with-http_ssl_module
./configure --with-http_ssl_module && make,再用 objs/nginx 替换原二进制文件make install,避免覆盖现有配置和路径证书路径必须绝对、私钥必须严格保护,否则 Nginx worker 进程读不到。
/etc/nginx/ssl/your_domain.crt 和 /etc/nginx/ssl/your_domain.key
sudo chmod 600 /etc/nginx/ssl/*.key
nginx 或 www-data):sudo chown nginx:nginx /etc/nginx/ssl/*.key
fullchain.pem 当作 ssl_certificate,privkey.pem 当作 ssl_certificate_key
这是最常出错的地方:漏掉 ssl 关键字、路径写错、没加协议限制。
listen 443 ssl; —— 必须带 ssl,不能只写 listen 443;
ssl_certificate 和 ssl_certificate_key 后跟绝对路径,例如:/etc/nginx/ssl/example.com.crt
ssl_protocols TLSv1.2 TLSv1.3;,ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256: 等root 目录下,比如:root /var/www/html;,所有子路径(/css/style.css、/img/logo.png)自动走 HTTPS避免用户手动输 http://,也防止混合内容(HTTP 资源被 HTTPS 页面拦截)。
server { listen 80; server_name example.com www.example.com; return 301 https://$host$request_uri; }rewrite,return 301 更安全、更清晰;$host 保留原始域名,多域名场景不跳错nginx -t 测试语法,再 nginx -s reload 生效