halo配置 域名和 ssl

2022-03-09 14:27:05 浏览数 (1)

1 .docker 环境

假设 docker 的环境已经安装好了。没有安装好的,参考[《linux 安装 docker》](https://www.yuque.com/docs/share/13e5e304-b57b-41f1-9d79-4698c4933d22?# 《linux 安装 docker》)

2.已申请好域名

3.申请 SSL 证书

我使用的是腾讯云,申请免费的 TrustAsia 的 SSL 证书,阿里云等或者其他平台一般都会提供 TrustAsia 的 SSL 证书的,填好域名等相关信息,一般 10 分钟内就可以下载证书了。

4.配置 Nginx

1>下载 Halo 官方的 Nginx 配置模板

代码语言:javascript复制
curl -o /etc/nginx/conf.d/halo.conf --create-dirs https://dl.halo.run/config/nginx.conf

2>下载完成之后,使用 vim 编辑 halo.conf

代码语言:javascript复制
vim / etc / nginx / conf.d / halo.conf;

打开之后我们可以看到

3>配置域名

3.1>不需要 SSL 的情况:

编辑内容如下

代码语言:javascript复制
server {
    listen 80;
    server_name example.com www.example.com; #此处可以改为自己的域名

    location / {
        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;

        proxy_pass http://127.0.0.1:8090/;
    }
}

配置完后,访问 example.com ww. example.com 的请求会被转发到服务器的 8090 端口自己的博客上

3.2> 需要 SSL 的情况
  • 步骤一:建个目录存放证书文件(不配置 SSL 可忽略),然后把下载的证书放到/data/nginx/conf.d/cert 中
  • 步骤二
      1. 如果不需要访问 http 的时候强制重定向为 https,可以用下面的配置
代码语言:javascript复制
# 非强制重定向https
server {
    listen 80; #侦听80端口,如果强制所有的访问都必须是HTTPs的,这行需要注销掉
    listen 443 ssl; #侦听443端口,用于SSL
    server_name halo.leader755.com;  # 自己的域名

    #配置 ssl
       ssl_certificate     /etc/nginx/cert/halo.leader755.com/halo.leader755.com.pem;  # pem文件的路径
    ssl_certificate_key  /etc/nginx/cert/halo.leader755.com/halo.leader755.com.key; # key文件的路径

    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    client_max_body_size 1024m;

    location / {
        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;
        proxy_pass http://115.159.155.102:8090;  # 这里改为自己服务器ip
    }
}
  • 2.如果需要访问 http 的时候强制重定向为 https,可以用下面的配置
代码语言:javascript复制
# 强制重定向
server {
    listen 80; # 监听80端口
    server_name halo.leader755.com;  # 自己的域名
    #把http的域名请求转成https
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl;
    server_name halo.leader755.com;  # 自己的域名

    # 配置 ssl
      ssl_certificate     /etc/nginx/cert/halo.leader755.com/halo.leader755.com.pem;  # pem文件的路径
    ssl_certificate_key  /etc/nginx/cert/halo.leader755.com/halo.leader755.com.key; # key文件的路径

    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    client_max_body_size 1024m;

    location / {
        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;
        proxy_pass http://115.159.155.102:8090/; # 这里改为自己服务器ip
    }
}
3.3>检查配置是否有误并且重载 Nginx 配置
代码语言:javascript复制
1>sudo nginx -t
2>sudo nginx -s reload

0 人点赞