docker nginx ssl设置

使用docker运行nginx,配置代理,和ssl设置,进行https访问

一 准备

本次在centos环境中

1.已安装docker,docker-compose

2.运行了一个后端服务容器,提供基本的接口访问【可选】

3.一个域名(已经解析到服务器上)【必要】

4.ssl证书【必要】

二 ssl证书下载

使用阿里云免费证书

登陆阿里云管理控制台,搜索 数字证书管理服务 ,进入证书管理

 点击左侧ssl证书,进入,点击免费证书,点击创建证书

 创建后,点击证书申请

填写内容,进行申请 

通过后,点击下载,选择nginx项

 

 

下载完成后上传至服务器,解压后有两个文件,分别以pem和key后缀

三 docker 容器间通信网络

由于nginx和服务都是运行在docker中,为了更好的进行容器间通信,使用docker的网络

docker network create --driver bridge --subnet 172.30.1.0/24 --gateway 172.30.1.1 my_net
# my_net 自定义网络名称

创建好一个网络后,查看 docker network list

[root@k8s-work2 men]# docker network list
NETWORK ID     NAME                   DRIVER    SCOPE
87c6a3cc05f4   bridge                 bridge    local
06441e9ed2b7   harbor_harbor          bridge    local
c1e749a2cfe9   host                   host      local
d09d714a1054   menstruation_default   bridge    local
bf99db8fc21e   my_net                 bridge    local
8a50da08ea68   my_network             bridge    local
042f6ecb737f   none                   null      local

创建容器时指定使用网络,参照4.3

四 nginx 

4.1 拉取镜像

docker pull nginx

4.2 创建配置文件

创建一个文件夹conf,增加一个文件nginx.conf,作为nginx的配置文件

其中后端服务的ip为自定义固定的,也可以使用后端服务容器名称【需要创建该容器时加入 三 中的网络】

events {
          
   
    worker_connections  1024;
}


http {
          
   
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    client_max_body_size 50m;

        server{
          
   
                listen       80;
                server_name  服务器ip;
                location = /favicon.ico {
                        access_log off;
                        log_not_found off;
                }
                location / {
          
                        proxy_pass http://172.30.1.8:8080/; # 后端服务ip接口
                }
        }
        server{


                listen       80;
                server_name  域名;
                # 过滤请求
                location = /favicon.ico {
                        access_log off;
                        log_not_found off;
                }
                location / {

                        proxy_pass http://172.30.1.8:8080/; # 后端服务ip接口
                }
        }
        server {
                listen 443 ssl;
                server_name 域名;
                ssl_certificate /etc/nginx/certs/xxx.pem; # 证书文件
                ssl_certificate_key /etc/nginx/certs/xxx.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; # 表示使用的TLS协议的类型。
                 ssl_prefer_server_ciphers on;
                location / {
                        proxy_pass http://172.30.1.8:8080/; # 后端服务ip接口
                }

        }

}

4.3 docker-compose.yaml

创建一个文件夹存放docker-compose.yaml

version: "3"
services:
  nginx:
    image: nginx #镜像名称
    container_name: nginx #容器名称
    stdin_open: true
    tty: true
    restart: always
    ports:
      - 80:80
      - 443:443
    volumes:
      - /usr/local/nginx/docker/certs:/etc/nginx/certs #将服务器上保存证书的目录挂载到nginx容器中
      - /usr/local/nginx/docker/logs:/var/log/nginx #挂载日记
      - /usr/local/nginx/docker/conf/nginx.conf:/etc/nginx/nginx.conf #挂载配置文件
    privileged: true
    networks:
      my_net:
          ipv4_address: 172.30.1.3 #固定ip
    environment:
      - SSL_CERT_PATH=/etc/nginx/certs/xxx.pem #证书名
      - SSL_KEY_PATH=/etc/nginx/certs/x.key #证书名
networks:
  my_net:
    external: true

4.4 运行

docker-compose up -d

五 验证

在浏览器中访问 https://域名/records/all/1,返回后端服务/records/all/1返回内容

并且有https图标

 

如果没有返回,则需查看logs文件夹下的日志内容,具体定位问题所在

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值