http 升级为 https

本贴最后更新于 2021 天前,其中的信息可能已经时移世改

前言

网上有很多将 http 升级为 https 的教材,在折腾了无数次后,我也成功将我的 http 升级为 https,所以写一篇帖子记录一下,希望可以帮到大家。

前置条件

  • 拥有自己的域名
  • 一台服务器,并将域名解析到服务器上
  • 一定的 linux 基础和 docker 基础,至少能跟着敲
  • 本教程基于 Centos7.*

使用 docker 安装 nginx,并配置好相关配置文件,确保能够正常访问

image.png

特别提醒:

  • 启动的 nginx 需要监听 443 端口,因为 443 端口是 https 所需的端口
  • 能够自由修改配置文件
  • 最后单独放置一个文件用来存储 ssl 证书,比如:-v /docker-data/nginx/ssl:/ssl/ #证书上传到服务器上的/docker-data/nginx/ssl目录下即可

申请一个 SSL 证书

网上有很多可以免费申请的地方,我的证书是在腾讯云申请的,跟进相应提示正确下载即可。
image.png

配置 nginx 文件

打开 nginx 的配置文件,根据实际情况(有可能是 nginx 文件下的 nginx.conf,也有可能是 conf.d 下的 default.conf)

server
{
   #listen       80;
  						# 需要同时打开https与htt时开启
    listen       443 ssl;
    server_name  www.jinjianh.com jinjianh.com;
   # 换成你的域名
    ssl on;
  								# 需要同时打开https与htt时注释掉
    ssl_certificate /ssl/1_www.jinjianh.com_bundle.crt;
  # 换成你的证书对应地址
    ssl_certificate_key /ssl/2_www.jinjianh.com.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;
    # 换成你的项目地址
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
    # 这里是一些其它配置项
}

如果需要只能访问 https 的话,需要将 listen 80 注释掉和 ssl on 打开,并新增如下配置

server{
  listen 80;
  server_name jinjianh.com www.jinjianh.com;
  rewrite ^(.*) https://$host$1 permanent;
}

保持配置,重启 nginx,使用 docker 启动的 nginx 一开始没有监听 443 端口的话会失败,重新打开一个监听 443 端口的 nginx 容器
成功效果如下
image.png

  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    492 引用 • 926 回帖
  • 环境搭建
    8 引用 • 12 回帖
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    313 引用 • 547 回帖
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...