section 1

环境

  • centos
  • nginx
  • 阿里云

步骤

  1. 阿里云申请免费域名(一个域名申请一个证书,如resume.zirupay.com和images.zirupay.com每个域名申请一个证书)

image.png

  1. 下载证书

image.png

  1. 添加https的 TXT 解析记录(这步在阿里云有域名的直接点验证即可给域名添加以下解析记录)

image.png

  1. 将证书添加到nginx根目录cert下

    1. // 查看nginx目录
    2. nginx -t
  2. 配置nginx对应ssl证书

image.png

section 2

配置域名为https

阿里云服务器 阿里云免费ssl证书 阿里云域名 阿里云域名解析

  1. 申请免费ssl证书
  2. 免费ssl证书只能关联一个域名不能使用通配符(例如www.zirupay.com这个域名的证书只能关联www.zirupay.com这个域名)
  3. 证书审核时填写www.zirupay.com
  4. 证书审核通过后下载证书,并把对应key和pem拷贝到相应的服务器文件夹下
  5. 修改对应www.zirupay.com域名的nginx配置文件,如www.zirupay.com就需要修改www.zirupay.com.conf配置,详细修改方式,阿里云上有说明

这样访问www.zirupay.com就必须使用https协议了

配置服务为https

  • 按照如上操作后其实到www.zirupay.com这个域名的443端口就是采用https协议了,在上面基础上如何实现https的服务呢?

首先我们可以在服务器本机比如9527端口上启个http的服务,再使用nginx来代理这个127.0.0.1:9527的http服务,就可以实现https服务了。详细操作如下:

  1. nginx配置www.zirupay.com为https服务(详细看配置域名为https)
  2. 服务器本地启动一个9527端口上的http服务
  3. 使用nginx来将https://www.zirupay.com/api/*代理到http://127.0.0.1:9527本地服务下
  • 这样当你访问https://www.zirupay.com/api/searchWord/format3就可以调到http://127.0.0.1:9527/searchWord/format3服务了
  • 当然也可以服务器对外暴露9527这个端口,服务本身就是一个https的服务。详细参考下面地址:https://blog.csdn.net/ererfei/article/details/73875795

nginx将http强行重定向到https

  • 当用户输入www.zirupay.com时默认使用的是http的协议,我们需要配置nginx将http重定向到https:
  1. # http强制转https
  2. server {
  3. listen 80;
  4. server_name www.zirupay.com;
  5. rewrite ^(.*) https://$server_name$1 permanent;
  6. }
  • 这样当用户输入www.zirupay.com,http://www.zirupay.com, https://www.zirupay.com都会访问到https://www.zirupay.com