https 配置需完成证书加载、端口监听、http→https 跳转三步;nginx 重定向须用 return 301 https://$host$request_uri,私钥权限为600且属主正确,证书目录权限至少755,必须分设80和443两个server块,cdn需关闭自动跳转,续期后须手动reload。

HTTPS 不是改个链接前缀就能用的,必须在服务器上完成证书加载、端口监听、HTTP→HTTPS 跳转三件事。漏掉任一环,浏览器就报“不安全”或直接拦截。
nginx 的 return 301 必须带 $request_uri
常见错误是写成 return 301 https://$host/;,结果所有带参数的 URL(比如 /login?next=/admin)全被截断成 https://example.com/,用户登录后跳转丢失。
-
$request_uri保留原始路径 + 查询参数(#后 fragment 除外) -
$uri只含路径,不含?及之后内容,不能用于重定向 - 用
$host而非$server_name,避免多域名绑定时跳转到固定域名 - 必须用
301,302是临时跳转,浏览器可能缓存,导致 HTTPS 无法稳定生效
私钥权限必须是 600,且属主为 nginx 进程用户
Nginx 启动失败报错 SSL_CTX_use_PrivateKey_file(...) failed (SSL: error:0200100D:system library:fopen:Permission denied),90% 是私钥权限或属主不对。
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
- 执行
sudo chmod 600 /etc/letsencrypt/live/example.com/privkey.pem - 确认 nginx 进程用户(
ps aux | grep nginx查USER列),通常是www-data或nginx;再执行sudo chown www-data:www-data /etc/letsencrypt/live/example.com/privkey.pem - 证书目录(如
/etc/letsencrypt/live/example.com/)至少需755权限,否则 Nginx 无法进入读取文件 - 别用软链接指向
/etc/letsencrypt/archive/—— Certbot 续期会更新目标,Nginx reload 不感知,容易卡在旧证书
HTTP→HTTPS 重定向必须在独立的 listen 80 server 块里配
有人在 listen 443 ssl 块里写 if ($scheme = http) { return 301 ... },这是无效的:HTTP 请求根本连不到这个块,因为 80 端口没监听,连接直接被拒绝。
- 必须有两个独立
server块:一个listen 80做跳转,一个listen 443 ssl做服务 - 若用了 CDN(如 Cloudflare),务必关掉它的“自动 HTTP 重定向”,否则和 Nginx 配置叠加,造成 301 循环
- 本地开发(
localhost)无法申请 Let’s Encrypt,可用mkcert生成自签名证书,但仅限测试 —— 浏览器会提示不信任
最易被忽略的一点:证书续期后,Nginx 不会自动重载配置。Certbot 的 renew 命令只更新证书文件,你得手动加 --deploy-hook "nginx -s reload" 或在 cron 里显式 reload。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










