docker nginx ssl设置的实现步骤
作者:fooleryang
本文主要介绍了docker nginx ssl设置的实现步骤,使用docker运行nginx,配置代理,和ssl设置,进行https访问,具有一定的参考价值,感兴趣的可以了解一下
使用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文件夹下的日志内容,具体定位问题所在
到此这篇关于docker nginx ssl设置的实现步骤的文章就介绍到这了,更多相关docker nginx ssl设置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!