• 将网站域名访问从http升级到https(腾讯云/阿里云)


    🏠 服务器与网站部署知识体系目录

    1.前提说明

    这里我以在 腾讯云 的操作为例进行演示,对域名 note.zhulang.love 进行 https 升级访问,每一步操作均以文字、截图或与代码形式进行了说明。

    我们需要准备:

    • 一台腾讯云服务器,为了方便,建议你把防火墙所有端口开放(至少保证 80 与 443 端口的开放)
    • 拥有自己的域名,并且已经完成了备案

    关于网站部署,本文中我会在服务器使用 docker 安装 nginx 1.24,并在 nginx 中安装 SSL 证书,同时我会写一个简单的 index.html 模拟我们的网站。

    2.服务器安装 docker 与 nginx

    2.1 安装 docker

    🍀 基于 centos 的安装

    1. 安装yum-utils

      sudo yum install -y yum-utils
      
      • 1
    2. 从国内服务器上下载docker

      sudo yum-config-manager \
          --add-repo \
          http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      
      • 1
      • 2
      • 3
    3. 安装docker

      sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
      
      • 1
    4. 验证是否成功

      sudo docker --version
      
      • 1

    🍀 基于ubuntu

    1. 安装需要的包

      sudo apt-get update
      
      • 1
    2. 安装依赖包,选择 y

      sudo apt-get install \
         apt-transport-https \
         ca-certificates \
         curl \
         gnupg-agent \
         software-properties-common
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    3. 添加 阿里 GPG 密钥

      curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
      
      • 1
    4. 设置远程仓库

      sudo add-apt-repository \
         "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
        $(lsb_release -cs) \
        stable"
      
      • 1
      • 2
      • 3
      • 4
    5. 安装 Docker-CE

      sudo apt-get update
      
      # 选择 y
      sudo apt-get install docker-ce docker-ce-cli containerd.io
      
      • 1
      • 2
      • 3
      • 4
    6. 验证是否成功

      sudo docker --version
      
      • 1

    2.2 配置阿里云国内加速器

    国内镜像中心常用的为阿里云与网易云,选择其中一个加速器进行配置即可,这里我们选择使用阿里云加速器。在本地 Docker 中指定要使用的国内加速器地址后,就可以直接从国内镜像中心下载镜像了。

    🍀 找到相应页面

    若要配置阿里云加速器,必须首先要有阿里云的账号。登录阿里云后,打开阿里云的容器镜像服务页面,然后找到如下页面,可以查看到你的 registry-mirrors

    image-20231008171636964

    🍀 创建 docker 目录

    sudo mkdir -p /etc/docker
    
    • 1

    🍀 创建 daemon.json 文件

    注意,该 json 数据中的 URL 地址是与用户登录账号绑定的,不同的用户所生成的地址是不同的。

    sudo vim /etc/docker/daemon.json
    
    • 1

    将你的阿里云账号的 registry-mirrors 替换以下的值,放入 daemon.json 中:

    {
      "registry-mirrors": ["https://********.mirror.aliyuncs.com"]
    }
    
    • 1
    • 2
    • 3

    🍀 重新加载服务配置文件

    sudo systemctl daemon-reload
    
    • 1

    🍀 重启 docker 引擎

    sudo systemctl restart docker
    
    • 1

    2.3 安装 nginx

    🍀 创建文件夹

    # 创建 nginx 用于数据卷的文件夹与存放用于验证域名获取 SSL 证书的文件
    sudo mkdir -p /app/nginx/html/.well-known/pki-validation/
    
    # 创建用于存放 ssl 证书的文件夹
    sudo mkdir /app/nginx/ssl
    
    # 添加权限,方便上传网站项目
    sudo chmod 777 /app/nginx/html
    
    # 添加权限,方便上传 ssl 证书
    sudo chmod 777 /app/nginx/ssl
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    🍀 创建 nginx 配置文件

    # 这个 nginx 文件的配置只是临时的,用于验证域名以申请 SSL 证书
    sudo vim /app/nginx/nginx.conf
    
    • 1
    • 2
    #user  root;
    error_log  /var/log/nginx/error.log notice;
    worker_processes  1;
    
    pid        /var/run/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        gzip	on;
        gzip_types	application/javascript; 
    
        server {
            listen       80;
            # 可进行域名绑定
            server_name  localhost;
    
            location / {
                root   html;
                index  index.html index.htm;
            }
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    🍀 创建 nginx

    sudo docker run \
    --name nginx \
    -v /app/nginx/nginx.conf:/etc/nginx/nginx.conf \
    -v /app/nginx/html:/etc/nginx/html \
    -v /app/nginx/ssl:/etc/nginx/ssl \
    -p 443:443 \
    -p 80:80 \
    -d nginx:1.24
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    # 验证创建并运行成功
    sudo docker ps
    
    • 1
    • 2

    3.免费 SSL 证书申请

    3.1 SSL 证书概述

    SSL 证书(SSL Certificates)提供了安全套接层(SSL)证书的一站式服务,包括证书申请、管理及部署功能,与顶级的数字证书授权(CA)机构和代理商合作,为您的网站、移动应用提供 HTTPS 解决方案。

    个人账号原来最多只能申请20张免费证书,现在个人账号最多可申请50张免费证书(其中20张免费证书支持绑定全网域名,30张免费证书可绑定腾讯云域名)。

    3.2 将想绑定证书的域名加入 DNS 解析

    🏠 我的解析 - 云解析 DNS - 控制台 (tencent.com)

    💭 这里我想绑定的域名是 note.zhulang.love

    image-20231009143349689

    image-20231009143749738

    3.3 提交证书申请

    🍀 定位控制台

    🏠 我的证书 - SSL 证书 - 控制台 (tencent.com)

    如果你从未申请过,那么显示应该如下图:

    image-20230413094046314

    如果你申请过,那么显示应该如下图:

    image-20231008164310798

    🍀 开始申请免费证书

    image-20230413094259474

    image-20231008164422868

    🍀 提交证书申请

    image-20231009142651234

    3.4 验证域名

    image-20231009161548900

    🍀 在服务器上创建验证文件

    # 你需要修改 E16F38EDEA0071179D4B78CBE5E55B6E.txt 为上图中你的文件名
    sudo vim /app/nginx/html/.well-known/pki-validation/E16F38EDEA0071179D4B78CBE5E55B6E.txt
    
    • 1
    • 2

    文件内容放入到 E16F38EDEA0071179D4B78CBE5E55B6E.txt 文件中,我这里是:

    0BE098CC9804A183E3E95E82F215DE3501F4FFF30950F518A366874A8EB601E0
    trust-provider.com
    cmcdtcvpl0q5ln
    
    • 1
    • 2
    • 3

    🍀 验证域名所属权

    image-20231009180216677

    🍀 审核通过

    image-20231009180343484

    image-20231009180504695

    4.https 网站部署

    4.1 证书上传到服务器

    🍀 证书下载

    image-20231009180743766

    image-20231009180826102

    image-20231009181119444

    红色框框中的两个文件 .key.crt 是我们需要上传到服务器的。

    🍀 修改文件名

    为了方便演示,我们将需要上传的服务器的 .key.crt 文件分别重命名为 ssl.keyssl.crt

    image-20231009181416484

    🍀 上传到服务器

    我们将 ssl.keyssl.crt 都上传到 /app/nginx/ssl 目录下。

    image-20231009181730843

    4.2 修改 nginx.conf 配置文件

    # 先直接删除原来的 nginx.conf
    sudo rm /app/nginx/nginx.conf
    
    # 创建新的
    sudo vim /app/nginx/nginx.conf
    
    • 1
    • 2
    • 3
    • 4
    • 5

    下面是 nginx.conf 的内容,你只需要修改一下两个 server 块中的 server_name 的值为你自己申请的域名即可。

    #user  root;
    error_log  			/var/log/nginx/error.log warn; 	# 错误日志路径和日志级别
    worker_processes 	auto;   						# Nginx工作进程数,通常设置为CPU核数
    pid        			/var/run/nginx.pid;
    
    # 定义事件模块
    events {
        worker_connections 	1024;	# 每个工作进程最大并发连接数
        use 				epoll; 	# 使用epoll网络模型,提高性能
        multi_accept 		on; 	# 开启支持多个连接同时建立
    }
    
    # 定义HTTP服务器模块
    http {
        # 定义MIME类型
        include       		mime.types;
        default_type  		application/octet-stream;
        sendfile        	on;
        keepalive_timeout  	65;
        
        gzip  				on; # 启用压缩,可以提高网站访问速度
        gzip_min_length 	1k; # 最小压缩文件大小
        gzip_types 			text/plain text/css application/json application/javascript application/xml; # 被压缩的类型
    
        server {
            listen 80;
            # 将 server_name 的值修改为你自己的域名 ******************************
            server_name 				note.zhulang.love;
            rewrite ^(.*) https://$server_name$1 permanent; # 如果是 http 请求,则永久重定向到 https 请求
        }
    
        server {
            listen 						443 ssl;  # 1.1 版本后这样写
            # 将 server_name 的值修改为你自己的域名 ******************************
            server_name 				note.zhulang.love;
            ssl_certificate      		/etc/nginx/ssl/ssl.crt;
            ssl_certificate_key  		/etc/nginx/ssl/ssl.key;
    
            ssl_session_cache			shared:SSL:1m; # 加密访问缓存设置,可以大大提高访问速度
            ssl_session_timeout 		10m;
            ssl_protocols 				TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; 
            ssl_ciphers 				HIGH:!aNULL:!MD5;
            ssl_prefer_server_ciphers 	on;
    
            fastcgi_param  				HTTPS        on;
            fastcgi_param  				HTTP_SCHEME  https;
    
            location / {
                root   html;
                index index.html index.htm;
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    4.3 添加 index.html

    为了方便测试,我们在 /app/nginx/html 文件夹下添加一个 index.html 文件:

    sudo vim /app/nginx/html/index.html
    
    • 1

    index.html 文件内容:

    DOCTYPE html>
    <html lang="zh-CN">
    
    <head>
        <meta charset="UTF-8">
        <title>Documenttitle>
    head>
    
    <body>
        欢迎访问<a href="https://www.zhulang.love" target="_blank" style="color: green;">狐狸半面添的客栈a>,持续的实战开发技术分享与编程指南。
    body>
    
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    4.4 测试 https

    我们先将 nginx 服务器重启:

    sudo docker restart nginx
    
    • 1

    然后使用 https 访问你自己的域名,我这里就是访问:https://note.zhulang.love

    image-20231010015320612

    5.总结

    5.1 你可能遇到的问题

    如果你使用 https 进行访问遇到:

    b965b63fb3c9a9fdd64aa74219703a1

    那么请检查你的服务器防火墙是否将 443 端口开放,当然,也请把 80 端口开放。

    5.2 静态网站的部署

    你只需要将你的静态项目文件放置在 /app/nginx/html 目录下即可。

  • 相关阅读:
    Mybatis中 collection 和 association 标签 的区别
    XPS—专项文献阅读-科学指南针
    Elasticsearch语法知多少之Match query
    读高性能MySQL(第4版)笔记04_操作系统和硬件优化
    Ubuntu使用dense_flow提取视频图像的光流图像
    2023最新国内外项目进度管理软件排行榜(推荐)
    Android 开发想学习Flutter?带你从0基础到“封神”
    vue3 中的根据某些特定的文字来筛选数组数据
    2022最新版-李宏毅机器学习深度学习课程-P26 自注意力机制
    直播课堂系统02-搭建项目环境
  • 原文地址:https://blog.csdn.net/qq_62982856/article/details/133744863