从零开始的个人博客搭建之旅(四)

warning: 这篇文章距离上次修改已过560天,其中的内容可能已经有所变动。

前言

  在上一篇文章中,我们已经实现了http访问个人博客,但http并不安全:

  • 通信使用明文(不加密),可能会被窃听
  • 不验证通信方的身份,有可能遭遇伪装
  • 无法证明报文的完整性,有可能已遭篡改

比较严重且常见的情况是,你的个人网站/博客出现了别的广告页面,这显然是我们所不希望的。本文将介绍如何使用 nginxfrp 实现超文本传输安全协议https(对多域名有效),流程图如下:


SSL证书申请

  一般在你购买域名的服务商那里可以申请到一年的免费ssl证书,也可以去Let's EncryptOpenSSL等获取免费证书,这方面网上文章比较多,不再赘述。
下载好证书,解压,找到nginx文件夹,将这个两个文件另外保存起来

安装及配置 nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,占有内存少,并发能力强

nginx下载页面下载最新稳定版安装包

先安装依赖,登录公网服务器,切换到管理员权限
安装GCC-GNU编译器集合

yum install gcc-c++

安装PCRE库

yum install -y pcre pcre-devel

安装Zlib库

yum install -y zlib zlib-devel

安装OpenSSL库

yum install -y openssl openssl-devel

利用 xftp 6nginx 压缩包上传到公网服务器,进入目标目录,解压

tar -zxvf nginx-1.18.0.tar.gz

进入到 nginx-1.18.0 文件夹,添加支持SSL模块配置

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

编译安装

make install

这时进入 /usr/local/nginx/conf 路径,修改 nginx.conf 配置文件(建议将这个文件下载修改,然后再上传覆盖)

http配置

    server {
        listen       80;
        #修改为你的域名
        server_name  www.drawrain.com;
        #重写为https请求
        rewrite ^(.*)$  https://$host$1 permanent; 
    }

https配置

    server {
        listen       443 ssl;
        #修改为你的域名
        server_name  www.drawrain.com;
        #修改为你的证书路径,这里我放到和nginx.conf文件同路径下
        ssl_certificate      ./zhibi.crt;
        ssl_certificate_key  ./zhibi.key;

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

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
              #端口号修改为你要穿透的端口
               proxy_pass http://127.0.0.1:8080;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
               proxy_set_header Host $http_host;
               proxy_set_header X-NginX-Proxy true;
               proxy_redirect default;
        }
    }

上传覆盖,别忘了上传证书文件到你修改的路径下!

frp配置修改

进入 frp 所在目录,先停止 frp 服务端、客户端,修改 frps.ini 监听端口为上述穿透端口

[common]
bind_port = 7000
vhost_http_port = 8080

重新启动 frp 服务端、客户端
进入 /usr/local/nginx/sbin 启动 nginx

./nginx
#或
nginx

这时进入浏览器输入你的域名,你会发现成功实现https访问啦

一些补充

致谢
本篇博客安装配置 nginx 分别借鉴了龙宝的博客Linux环境下Nginx的安装,以及喻聪的博客配置Nginx支持https,感谢两位博主给予的帮助。

后台登录
在完成https的升级后,可能会出现博客后台无法打开的情况,只需要网站运行目录下的 config.inc.php 文件中添加下述代码即可

/**开启https*/
define('__TYPECHO_SECURE__',true);

nginx操作命令

#停止nginx
nginx -s quit
#强制停止nginx
nginx -s stop
#重启nginx
nginx -s reload
#检测配置文件
nginx -t

添加新评论