一、购买SSL证书

参考B站视频购买SSL证书的部分,到Nginx配置那边不用看(不适配),下面会说

阿里云域名HTTP+SSL证书流程_哔哩哔哩_bilibili

二、配置SSL证书

1.控制台搜索SSL证书管理,点击更多,点击下载,找到服务类型Nginx,点击下载

2.通过XFTP传到/etc/nginx/cert, unzip命令解压

3.找到Nginx配置typecho的文件,不同的人可能不同,找到当初自己配置的那个。我的是/etc/nginx/sites-available/default。

Nginx或Tengine服务器配置SSL证书_数字证书管理服务(原SSL证书)(SSL Certificate)-阿里云帮助中心,阿里云的官方文档是nginx.conf这个文件。

先来讲讲..../nginx/nginx.conf和..../nginx/sites-available/*这两个的区别,一个是全局文件(nginx.conf),用于全局配置,另外一个则是站点级别配置,这些文件专门用于设置每个网站的相关配置,每个站点的配置文件都可以单独管理。我们配置当初安装typecho时配置的Nginx的文件即可。

4.vim进入配置文件

先复制配置文件,粘贴到记事本,然后清空配置文件,先添加

# HTTP -> HTTPS 重定向
server {
    listen 80;
    server_name 你的域名;

    # 所有 HTTP 请求重定向到 HTTPS
    return 301 https://$host$request_uri;
}

这个 Nginx 配置片段用于 将所有 HTTP 请求自动重定向到 HTTPS。它的作用是确保无论用户输入的是 http://还是 https://,最终都会使用加密的 HTTPS 协议来访问你的网站。

然后再添加下面这个,有注释的地方是要改动的,不确定就让chatgpt帮改

server {
    listen 443 ssl; # 这边443后面要加ssl
    server_name astrylia.top www.astrylia.top; #根据你自己实际来

    ssl_certificate /etc/nginx/cert/YOURDOMAIN; # 这边根据你自己的实际位置来
    ssl_certificate_key /etc/nginx/cert/YOURDOMAIN; # 这边根据你自己的实际位置来

    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;

    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4';
    ssl_prefer_server_ciphers on;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

    root /var/www/typecho; # 这边根据你自己的实际位置来
    index index.php index.html index.htm; # 这边根据你自己的实际位置来

    # location就用你自己的,不用抄我的
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires max;
        log_not_found off;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        rewrite ^(.*)$ https://$host$1 permanent;
    }
}

搞完后,:wq退出

sudo nginx -t //看配置是否有问题
// 没问题再执行下面的
sudo nginx -s reload

三、惊天巨坑

此时如果直接通过域名访问,会发现有些资源渲染失效。我搞了好几个小时不知道问题在哪里,疯狂问gpt,结果也没改好。最后看到这篇文章,弄好了

ubuntu手动搭建typecho博客_ubuntu 命令行安装typecho-CSDN博客

具体就是两点要改

第一点,站点地址改成https

第二点,config.inc.php里面添加

define('__TYPECHO_SECURE__', true);

OK,大功告成。