服务器HTTPS配置(1)

现在各大浏览器都大力倡导https协议的网页传输,使用SSL证书对网页内容加密避免数据在传输时被恶意拦截修改等等。
在个人服务器上实现的web应用也应该尽可能使用HTTPS协议传输网页数据。RedBit配置https的过程颇为坎坷,因此开题方便一样在尝试https的难兄难弟们

准备工作

你需要:

  1. 一个有公网ip的服务器,RedBit的服务器系统是Ubuntu Server 20.04 LTS
  2. 一个已经备案的域名

1. 申请SSL证书

服务器需要使用SSL证书对传输数据加密,达到HTTPS的要求。网络上可以很容易地找到免费的SSL证书颁发网站,一般的云服务器供应商(阿里、腾讯云等)也会提供免费的SSL证书申请,如果需要也可以付费购买证书。申请通过后可将证书下载到本地。RedBit通过腾讯云申请、获取的SSL证书,包含了以下内容:
SSL证书
可以看到,证书已经涵盖了几种常见的HTTP服务器,下面还有3个通用的证书文件。先将SSL证书解压,等待上传服务器。

2. 服务器Nginx配置

2.1 Nginx的安装

为了让多条域名解析到同一个服务器ip,仍可以提供多个网页的服务,RedBit采用的方式是使用Nginx作为反向代理的服务器。首先在服务器安装Nginx

# 普通用户下
sudo apt install nginx
# 或
sudo apt-get install nginx

等待安装完成

2.2 上传SSL证书

将先前保存在本地的SSL证书通过SFTP等方式上传到服务器上,建立文件夹妥善保存。
RedBit将SSL证书存放于/root/SSL/目录下,后续过程也以此目录为例
此目录下应该有:

  1. xxx.crt
  2. xxx.key

两个文件,xxx可自定,记住备用

2.3 Nginx配置文件修改

nginx安装完成后,我们需要对配置文件做修改。

1. 修改默认端口

按照RedBit的习惯,修改nginx默认监听端口从80到8088

cd /etc/nginx/sites-enabled
vim default

将default的配置从

listen 80 default_server;
listen [::]:80 default_server;

修改为

listen 8088 default_server;

ESC + :wq + ENTER保存

2. 添加站点配置文件

对于每一个网站,nginx都需要一个配置文件。这个文件让nginx知道该如何反向代理来自不同子域名的http请求
假设RedBit需要建立一个个人博客,域名为www.redbit.site(事实也确实如此)那么我们按照步骤操作

  1. 创建配置文件
# pwd: /etc/nginx/sites-enabled/
vim redbit_blog
# 按i进入编辑模式
  1. 编辑配置文件
upstream redbit {
	# 8443为http/https服务的端口
    server localhost:8443;
}
server{
		# 设置80(http服务)端口访问返回302跳转https服务
        listen 80;
        server_name www.redbit.site; # 只响应访问www.redbit.site的请求
        rewrite ^(.*)$ https://$host$request_uri; 
}
server{
        listen 443 ssl; # 监听443(https)端口,并启用SSL证书
        server_name www.redbit.site;
        ssl_certificate /root/SSL/xxx.crt; # xxx自主替换为文件名
        ssl_certificate_key /root/SSL/xxx.key;
        add_header Content-Security-Policy "upgrade-insecure-requests;connect-src *";
        location / {
                proxy_redirect off; # 禁止跳转
                proxy_set_header Host $host;    # 域名转发
                proxy_set_header X-Real-IP $remote_addr;    # IP转发
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_pass https://redbit;
   }
}

一样,按ESC + :wq + ENTER保存

  1. 启动nginx服务
nginx

观察命令行输出,若无报错则说明nginx已经成功开始进行反向代理,可以尝试浏览器访问,可以访问web应用内容并能看到https标志即表明https配置成功。
此处nginx报错多数为端口冲突,自主检查其他运行的服务是否占用了80、443这两个端口,关闭程序即可

写在最后

到这里,https配置的基本步骤已经执行完毕,服务器对外的443端口请求已经采用SSL证书加密。
下一期,我会介绍使用docker情况下,对流行博客框架wordpress apache版的https配置。由于wordpress的特殊性,只执行本期操作会导致所有除html外的其他资源,由于安全限制被浏览器拦截而不显示。

感谢各位的阅读,文中如有错误还烦请指出。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值