docker nginx ssl设置的实现步骤

 更新时间:2023年08月15日 16:00:43   作者: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设置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker pull出现错误或速度慢具体解决办法

    docker pull出现错误或速度慢具体解决办法

    docker pull的时候速度特别慢,急死我了,相信看到文章的你跟我是一个心情,下面这篇文章主要给大家介绍了关于docker pull出现错误或速度慢的具体解决办法,需要的朋友可以参考下
    2024-05-05
  • Docker部署php运行环境(php-fpm+nginx)

    Docker部署php运行环境(php-fpm+nginx)

    Docker 是一种流行的容器化平台,可以帮助开发人员快速创建、部署和管理容器化应用程序,本文将介绍如何使用 Docker 搭建 PHP 开发环境服务器,让您能够轻松地开始 PHP 开发工作,感兴趣的可以了解一下
    2023-11-11
  • 在Docker中安装Oracle数据库超详细步骤

    在Docker中安装Oracle数据库超详细步骤

    oracle作为全球最强大的关系型数据库,应用在各行各业,下面这篇文章主要给大家介绍了关于在Docker中安装Oracle数据库的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • 使用docker compose快速配置一组容器服务详解

    使用docker compose快速配置一组容器服务详解

    这篇文章主要为大家介绍了使用docker- compose快速配置一组容器服务详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • 详解Docker 端口映射与容器互联

    详解Docker 端口映射与容器互联

    这篇文章主要介绍了详解Docker 端口映射与容器互联 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • 在Docker容器中使用Arthas的详细步骤

    在Docker容器中使用Arthas的详细步骤

    本文不是介绍arthas怎么用的。这里要说的是,如何在我们的docker容器中,使用arthas,对如何在Docker容器中使用Arthas相关知识感兴趣的朋友一起看看吧
    2021-12-12
  • Docker如何限制容器可用的内存

    Docker如何限制容器可用的内存

    容器的使用过程中,经常需要对容器可以使用的主机资源进行限制,本文介绍如何限制容器可以使用的主机内存,需要的朋友参考下吧
    2017-12-12
  • 如何在centos的docker里安装jupyter并开放端口

    如何在centos的docker里安装jupyter并开放端口

    上次有一朋友问小编如何在centos的docker里安装jupyter并开放端口呢?在这就不一一回复大家了,下面小编把我的个人经验分享到脚本之家平台,感兴趣的朋友一起看看吧
    2021-08-08
  • 用docker一键部署前后端分离项目的详细流程

    用docker一键部署前后端分离项目的详细流程

    这篇文章主要介绍了如何用docker一键部署前后端分离项目的详细流程,通过图文结合的方式给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-03-03
  • Docker 简单部署 ElasticSearch的实现方法

    Docker 简单部署 ElasticSearch的实现方法

    这篇文章主要介绍了Docker 简单部署 ElasticSearch的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09

最新评论