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 中
- 步骤二
- 如果不需要访问 http 的时候强制重定向为 https,可以用下面的配置
# 非强制重定向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,可以用下面的配置
# 强制重定向
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