Nginx系列-6.配置Nginx的HTTPS

Nginx系列-6.配置Nginx的HTTPS

目录 - Nginx系列

Nginx系列-1.Linux下安装Nginx
Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架构
Nginx系列-3.配置Nginx虚拟主机
Nginx系列-4.Nginx日志配置及日志切割
Nginx系列-5.配置Nginx的防盗链
Nginx系列-6.配置Nginx的HTTPS
Nginx系列-7.配置Nginx使用uwsgi支持web.py框架
Nginx系列-8.配置Nginx+Apache实现动静分离
Nginx系列-9.配置NFS实现Nginx实现动静分离
Nginx系列-10.采用Nginx搭建正向代理服务
Nginx系列-11.配置Nginx反向代理和负载均衡


实验环境
一台最小化安装的 CentOS7 虚拟机
nginx 的版本为 1.12.2
一台某厂商的 CentOS7 云服务器

一、本地实验:准备环境

  1. 修改配置文件,建立一个虚拟主机

    vim /etc/nginx/conf.d/vhosts.conf

    添加如下内容

    server {
        listen  80;
        server_name site1.test.com;
        root    /var/wwwroot;
        index   index.html;
        location / {
        }
    }

    Nginx系列-6.配置Nginx的HTTPS

  2. 建立网站根目录,并添加主页文件

    mkdir /var/wwwroot
    cd /var/wwwroot
    echo -e "main site" >> index.html
  3. 重启nginx服务

    systemctl restart nginx
  4. 关闭防火墙

    setenforce 0
    systemctl stop firewalld
    systemctl disable firewalld
  5. 在宿主机修改C:\Windows\System32\drivers\etc\hosts文件
    修改site1.test.com的映射
    192.168.204.133   site1.test.com

二、本地实验:颁发网站认证证书

  1. 检查网站认证证书

    rpm -qa | grep ssl

    Nginx系列-6.配置Nginx的HTTPS

  2. 建立/etc/nginx/ssl目录,并生成RSA秘钥

    mkdir /etc/nginx/ssl
    cd /etc/nginx/ssl
    openssl genrsa -out server.key 2048

    Nginx系列-6.配置Nginx的HTTPS

  3. 生成服务器CSR证书请求文件,注意和站点(server_name)名称一致
    按提示输入信息

    openssl req -new -key server.key -out server.csr

    Nginx系列-6.配置Nginx的HTTPS

  4. 生成服务器认证证书
    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

    Nginx系列-6.配置Nginx的HTTPS

三、本地实验:配置HTTPS网站

  1. 编辑nginx配置文件

    vim /etc/nginx/conf.d/vhosts.conf

    修改为如下内容

    server {
        listen  443;
        server_name site1.test.com;
        root    /var/wwwroot;
        index   index.html;
        # ssl configure
        ssl on;
        ssl_certificate /etc/nginx/ssl/server.crt;
        ssl_certificate_key /etc/nginx/ssl/server.key;
        # location
        location / {
        }
    }

    Nginx系列-6.配置Nginx的HTTPS

  2. 重启nginx服务

    systemctl restart nginx
  3. 在宿主机访问https://site1.test.com
    Nginx系列-6.配置Nginx的HTTPS

  4. 查看证书内容
    Nginx系列-6.配置Nginx的HTTPS

四、上云实验:在腾讯云申请并配置ssl证书

  1. 登录腾讯云
    点击访问 腾讯云

  2. 依次点击产品->域名与网站->SSL证书
    Nginx系列-6.配置Nginx的HTTPS

  3. 选择域名型免费版(DV)
    Nginx系列-6.配置Nginx的HTTPS

  4. 填写域名和邮箱地址
    Nginx系列-6.配置Nginx的HTTPS

  5. 验证域名,可以选择DNS验证文件验证,这里选择的文件验证

  6. 根据提示,在/.well-known/pki-validation/目录下建立fileauth.txt文件,并添加相关内容
    Nginx系列-6.配置Nginx的HTTPS

  7. 等待审核通过
    Nginx系列-6.配置Nginx的HTTPS

  8. 点击证书详情,获取证书
    Nginx系列-6.配置Nginx的HTTPS

  9. 安装证书
    将域名 www.domain.com 的证书文件1_www.domain.com_bundle.crt 、私钥文件2_www.domain.com.key保存到同一个目录,例如/ect/nginx/ssl目录下。
    更新配置文件如下

    server {
        listen 443;
        server_name www.domain.com; #填写绑定证书的域名
        ssl on;
        ssl_certificate /etc/nginx/ssl/1_www.domain.com_bundle.crt;
        ssl_certificate_key /etc/nginx/ssl/2_www.domain.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   html; #站点目录
            index  index.html index.htm;
        }
    }

    Nginx系列-6.配置Nginx的HTTPS
    配置完成后,先用bin/nginx –t来测试下配置是否有误,正确无误的话,重启nginx。就可以使 https://www.domain.com 来访问了。

  10. http跳https(可选)
    对于用户不知道网站可以进行https访问的情况下,让服务器自动把http的请求重定向到https。
    在服务器这边的话配置的话,可以在页面里加js脚本,也可以在后端程序里写重定向,当然也可以在web服务器来实现跳转。Nginx是支持rewrite的(只要在编译的时候没有去掉pcre)
    在http的server里增加

    rewrite ^(.*) https://$host$1 permanent;

    这样就可以实现80进来的请求,重定向为https了。

  11. 重启nginx服务

    systemctl restart nginx
  12. 测试访问
    访问http://[your_domain]可以跳转到https端口上
    访问https://[your_domain]亦可正常访问
    Nginx系列-6.配置Nginx的HTTPS

猜你喜欢

转载自blog.51cto.com/tong707/2126810