利用docker-compose搭建Nginx以及https的访问

自己之前搭建了一个网站,但是一直访问的是http的方式,最近申请到了域名,于是就想着用ssl证书实现HTTPS访问的方式。 

 HTTPS的全称是Secure Hypertext Transfer Protocol(安全超文本传输协议),是在http协议基础上增加了使用SSL加密传送信息的协议。我们还是用天地会接头的例子来讲,大家可能觉得每 次天地会接头都是使用“地震高岗,一派西山千古秀!”这类妇孺皆知的接头暗号,这样的组织还有什么安全性可言?只要说出了暗号那么就可能获得天地会的相关 秘密。事实上并不是这样的,如果仅仅是靠一个妇孺皆知的接头暗号进行信息保密,天地会可能早被清兵围剿了,何来那么多传奇故事呢?他们之间的交流除了使用 了接头暗号外,可能还是用了“黑话”,就是一些仅仅只有天地会成员才能听懂的黑话,这样即使天地会成员之间的交谈信息被泄露出去了,没有相关揭秘的东西, 谁也不会知道这些黑话是什么?同样HTTPS协议就如同上面天地会的信息交谈一样,它也将自己需要传输的超文本协议通过SSL加密,让明文变成了“黑话” 即使传输的信息被人捕获,捕获的人也没办法知道其实际内容。

首先你要有SSL证书,阿里云申请域名可以获得免费证书,申请一下就好啦。然后下载Nginx。我用的是docker-compose的方法搭建Nginx,创建一个文件夹,然后创建一个docker-compose.yml,代码如下:

利用docker-compose搭建Nginx以及https的访问_第1张图片

wwwroot是我之前测试用的,这里可以不配置,还有两个数据卷conf/nginx.conf和conf/cert,然后在docker-compose同级目录下创建conf文件夹然后在里面配置nginx.conf,创建cert文件夹,cert里面就放我们自己刚才下载下来的两个文件。

利用docker-compose搭建Nginx以及https的访问_第2张图片

然后配置Nginx.cnf,代码如下:

# 启动进程,通常设置成和 CPU 的数量相等
worker_processes  1;

events {
    # epoll 是多路复用 IO(I/O Multiplexing) 中的一种方式
    # 但是仅用于 linux2.6 以上内核,可以大大提高 nginx 的性能
    use epoll;
    # 单个后台 worker process 进程的最大并发链接数
    worker_connections  1024;
}

http {
    # 设定 mime 类型,类型由 mime.type 文件定义
    include       mime.types;
    default_type  application/octet-stream;

    # sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
    # 必须设为 on,如果用来进行下载等应用磁盘 IO 重负载应用,可设置为 off,以平衡磁盘与网络 I/O 处理速度,降低系统的 uptime.
    sendfile        on;
    
    # 连接超时时间
    keepalive_timeout  65;

    # 设定请求缓冲
    client_header_buffer_size 2k;

    server {  
        listen  80;  
        server_name www.域名.top;  
       rewrite ^(.*)$  https://$host$1 permanent;  
        }  
    server {
        listen       443 ssl;
        ssl_certificate  /cert/XXXXXX.pem;
        ssl_certificate_key /cert/XXXXX.key;
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;    

    # 虚拟主机名称这里配置ip地址
        server_name  www.域名.top;
    # 所有的请求都以 / 开始,所有的请求都可以匹配此 location
        location / {
            proxy_pass http://你部署在服务器的IP:端口;
        # 指定欢迎页面,按从左到右顺序查找
            index  index.html index.htm;
        }

    }
 
}

然后回到docker-compose.yml目录下,运行docker-compose up -d就可以创建容器了。然后访问就成功啦。

你可能感兴趣的:(利用docker-compose搭建Nginx以及https的访问)