博客搭建(三):域名配置及SSL证书配置

2022-01-18 19:03:43 浏览数 (1)

写在前面

  1. 假设你已经成功配置并运行好了 Halo,且不是使用 80 端口运行。
  2. 有一个可用的域名,并且已经备案了。(如果没有域名,可以去阿里云上购买)
  3. 请确保域名已经成功解析到服务器的 IP,并确认服务器是否需要备案。
  4. 请检查服务器的 80 和 443 端口是否开放。
  5. 如果想要博客支持 https 连接,则必须需要一个有效的 SSL 证书。(SSL 证书也可以去阿里云购买)

> 提示:

> 现在大多数网站都支持 https 连接,而且 chrome 浏览器要求网站必须提供 https 连接,否则会提示警告(此网站不安全),所以说以后网站支持 https 连接是必不可少的。

安装 Nginx

代码语言:javascript复制
# 添加 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

配置 Nginx

代码语言:javascript复制
# 下载 Halo 官方的 Nginx 配置模板
curl -o /etc/nginx/conf.d/halo.conf --create-dirs https://dl.halo.run/config/nginx.conf

下载完成之后,我们还需要使用 vim 命令对其进行修改:

代码语言:javascript复制
# 使用 vim 编辑 halo.conf
vim /etc/nginx/conf.d/halo.conf

打开之后,我们可以看到如下信息:

代码语言: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 改为自己的域名。

修改完成之后,我们需要重新加载 Nginx 配置文件,如:

代码语言:javascript复制
# 检查配置是否有误
sudo nginx -t

# 重载加载 Nginx 配置文件
sudo nginx -s reload

配置 SSL 证书

> 首先,您需要有一个有效的 SSL 证书,如果没有,可以去阿里云申请购买。

> SSL 证书申请好后,点击下载证书,就可以得到一个密钥,我们需要将密钥拷贝至服务器。

使用 vim 命令打开 nginx.conf 配置文件,如:

代码语言:javascript复制
# 使用 vim 编辑 nginx.conf
vim /etc/nginx/nginx.conf 

打开之后,在 nginx.conf 配置文件中的最后一行,加上如下配置:

代码语言:javascript复制
user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    # 最后一行加上
    include /etc/nginx/conf.d/*.conf;
}

使用 vim 命令,打开 halo.conf 配置文件,如:

代码语言:javascript复制
# 使用 vim 编辑 halo.conf
vim /etc/nginx/conf.d/halo.conf

打开之后,我们会看到如下信息,并对其进行修改,如:

代码语言:javascript复制
## 将所有的 http 请求,转发到 https
server {
    listen 80;

    server_name pengzhenjin.top www.pengzhenjin.top;

    rewrite ^(.*)$ https://$host$1 permanent;   # 将所有 http 请求通过 rewrite 重定向到 https

    # 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://127.0.0.1:8090;
    # }
}

## 配置 pengzhenjin.top 的 ssl
server {
    listen 443 ssl;
    server_name pengzhenjin.top;

    ssl_certificate /etc/nginx/cert/pengzhenjin.top.pem;
    ssl_certificate_key /etc/nginx/cert/pengzhenjin.top.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    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;
    }
}

## 配置 www.pengzhenjin.top 的 ssl
server {
    listen 443 ssl;
    server_name www.pengzhenjin.top;

    ssl_certificate /etc/nginx/cert/pengzhenjin.top.pem;
    ssl_certificate_key /etc/nginx/cert/pengzhenjin.top.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    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;
    }
}                                                                                

说明:

上面的配置中,我们会看到有三个 server,其中,第一个 server,是配置将所有 http 请求,转发到 https;第二个 server 和 第三个 server,是配置域名网址 与 SSL 证书进行关联。(由于阿里云上申请的免费证书不支持域名通配符,只能一个域名对应一个证书,因此配置了两个仅证书不一样的 server)

最后

到这里,关于 Nginx 的配置也就完成了,现在你可以访问一下自己的域名,并进行 Halo 的初始化了。

> 提示:

在设置了 Nginx 反向代理之后,请一定记得去 Halo 的后台管理系统设置一下正确的博客地址,否则可能会造成资源获取不成功。

0 人点赞