zoukankan      html  css  js  c++  java
  • Nginx实现ssl一级、二级域名证书部署并用https访问代理转发服务器

    1.  规划

    域名 解析IP Nginx代理
    htpps://www.devcult.com 47.88.10.155  
    htpps://auto.devcult.com 47.88.10.155 https://www.automa.com
    htpps://www.automa.com 103.200.200.203  

    本次实验用了2个一级域名,1个二级域名,2个ip地址;实现功能如上图所示,要求全部使用https,并且一级域名实现自动补全www。

    2. 前提准备

    1. 47.88.10.155、103.200.200.203分别部署nginx
    2. 解析ip分别在域名购买商解析
    3. ssl证书需要申请3个,分别对应两个一级域名和一个二级域名

    3. Nginx 证书部署

    两台主机47.88.10.155、103.200.200.203的nginx配置如下:

    nginx启动路径:/usr/local/nginx/sbin/nginx

    nginx配置文件路径:/usr/local/nginx/conf/nginx.conf

    以47.88.10.155为例说明配置ssl证书:

    3.1 进入配置文件编辑:

    vim /usr/local/nginx/conf/nginx.conf

    3.2 .在http节点下下新增或修改:

    http {
      include mime.types;
      default_type application/octet-stream;
    
      #配置https网站配置文件夹
      include /usr/local/nginx/conf/sites-enabled/*.conf;
    
      ...
    
      server  {
    
        listen 80;
    
        #http 带www和不带www的入口
        server_name devcult.com www.devcult.com;
    
        #可选,这里是把所有http请求全部重定向到https
        return 301 https://www.devcult.com$request_uri;
    
    
        location / {
          root html;
          index index.html index.htm;
        }
        ...
      }
    }
    

      

    3.3 .新增网站ssl配置文件夹和配置文件

    mkdir /usr/local/nginx/conf/sites-enabled

    3.4 证书安装

    3.4.1 devcult.com域名配置ssl

    把申请的证书下载到服务器上(此处以腾讯云秘钥格式为例,使用亚洲诚信(TrustAsia)证书,其他类似),里面包含:

    证书文件1_devcult.com_bundle.crt 、私钥文件2_devcult.com.key

    将域名 www.devcult.com 的证书文件1_devcult.com_bundle.crt 、私钥文件2_devcult.com.key保存到同一个目录,本示例在/usr/local/nginx/conf目录下。
    新建Nginx根目录下 conf/sites-enabled/www.devcult.com.conf 文件如下:

    [root@aliyun ~]# cat /usr/local/nginx/conf/sites-enabled/www.devcult.com.conf
    server {
            listen       443 ssl;
    
         #填写绑定证书的域名
            server_name  devcult.com;
    
         #跳转www:把https://devcult.con 重定向到 http://www.devcult.com
            return 301 http://www.devcult.com$request_uri;
    
         #证书名称,需要跟证书文件名一致
            ssl_certificate      1_devcult.com_bundle.crt;
            ssl_certificate_key  2_devcult.com.key;
    
            ssl_session_cache    shared:SSL:1m;
            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;
            }
        }
    server {
            listen       443 ssl;
    
         #填写绑定证书的域名
            server_name  www.devcult.com;
    
         #证书名称,需要跟证书文件名一致
            ssl_certificate      1_devcult.com_bundle.crt;
            ssl_certificate_key  2_devcult.com.key;
    
            ssl_session_cache    shared:SSL:1m;
            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;
            }
        }

    注:这里设置两个server的作用是为了让https://devcult.com 跳转至https://www.devcult.com

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

    注:

    配置文件参数说明
    listen 443 SSL访问端口号为443
    ssl on 启用SSL功能
    ssl_certificate 证书文件
    ssl_certificate_key 私钥文件
    ssl_protocols 使用的协议
    ssl_ciphers 配置加密套件,写法遵循openssl标准
    3.4.2 automa.com域名配置ssl

    参考3.4.1

    3.4.3 automa.devcult.com域名配置ssl

    二级域名 automa.devcult.com 代理跳转 automa.com(或任意IP)配置:

    把申请的二级域名证书下载到服务器上(此处以腾讯云秘钥格式为例,使用亚洲诚信(TrustAsia)证书,其他类似),里面包含:

    证书文件1_automa.devcult.com_bundle.crt 、私钥文件2_automa.devcult.com.key

    将二级域名 automa.devcult.com 的证书文件1_automa.devcult.com_bundle.crt 、私钥文件2_automa.devcult.com.key保存到同一个目录,本示例在/usr/local/nginx/conf目录下。
    新建Nginx根目录下 conf/sites-enabled/automa.devcult.com.conf 文件如下:

    cat /usr/local/nginx/conf/sites-enabled/automa.devops-cultural.club.conf 
    server {
            listen       443 ssl;
            server_name  automa.devcult.com;
            server_name_in_redirect off;
            ssl_certificate      1_automa.devcult.com_bundle.crt;
            ssl_certificate_key  2_automa.devcult.com.key;
    
            ssl_session_cache    shared:SSL:1m;
            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 / {
              tcp_nodelay     on;
              proxy_set_header Host            $host;
              proxy_set_header X-Real-IP       $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_pass https://www.automa.com;
            }
        }

    3.5 使用全站加密,http自动跳转https(可选)

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

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

    或者

    return 301 https://www.devcult.com$request_uri;


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

    4.测试

    输入地址 跳转地址 证书合法
    devcult.com https://www.devcult.com 合法
    www.devcult.com 合法
    https://devcult.com 合法
    https://www.devcult.com 合法
    automa.devcult.com

    https://automa.devcult.com

    实际访问内容为https://www.automa.com

    合法
    automa.com https://www.automa.com

    合法
    www.automa.com 合法
    https://automa.com 合法
    https://www.automa.com 合法
  • 相关阅读:
    遂宁2017届零诊16题(仅想说明网传答案的不正确)
    当参变分离遇见洛必达
    高考数学九大超纲内容(1)wffc
    给王志红老师构造的函数,想说明搜题软件的解答过程的不严谨!
    记住路径名
    php返回文件路径
    两个字符串合并为一个字符串的各种方法
    global作用域
    二进制字符串的比较
    var_dump — 打印变量的相关信息
  • 原文地址:https://www.cnblogs.com/rysinal/p/7358758.html
Copyright © 2011-2022 走看看