一.安装Nginx

下列代码适用于CentOS

# 添加 Nginx 源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

# 安装 Nginx
sudo yum install -y nginx

# 启动 Nginx
sudo systemctl start nginx.service

# 设置开机自启 Nginx
sudo systemctl enable nginx.service

下列代码适用于Ubuntu

sudo update
sudo apt install nginx

二.配置Nginx

sudo vim /etc/nginx/conf.d/halo.conf

将下面的内容粘贴进去

upstream halo {
  server 127.0.0.1:8090;
}
server {
  listen 80;
  listen [::]:80;
  server_name www.yourdomain.com;
  client_max_body_size 1024m;
  location / {
    proxy_pass http://halo;
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

后保存退出,输入下列命令检查配置

sudo nginx -t

三.使用 certbot 申请并自动安装SSL证书

1.安装 certbot 和 certbot nginx 插件

根据自己的系统选择相应命令

CentOS 安装 certbot 以及 certbot nginx 插件

sudo yum install certbot -y

sudo yum install python3-certbot-nginx -y

Ubuntu 安装 certbot 以及 certbot nginx 插件

sudo apt install certbot

sudo apt install python3-certbot-nginx

2.申请并自动配置证书

sudo certbot --nginx

需要输入邮箱并按y或a同意相关协议,具体请参考输入命令后的输出

3.自动续约

这里申请的免费证书可以免费续期,理论上可以一直免费使用,这里提供了自动执行续期的命令

sudo certbot renew --dry-run

4.注意事项

到这里,即完成了所有的步骤,可以直接通过域名进行Halo博客的访问。注意,国内服务商注册的域名大多需要备案,否则无法使用,具体请参考云服务商的文档。

在设置完反向代理后,必须在博客的后台管理界面设置正确的博客地址,否则可能导致CSS加载不成功、样式混乱等错误。