栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker-compose 部署nginx配置ssl

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker-compose 部署nginx配置ssl

docker-compose 部署nginx
  • 1 背景
  • 2 环境说明
  • 3 部署nginx
    • 3.1 准备工作
    • 3.2 开始部署
  • 4 配置SSL证书
  • 5 参考

1 背景

随着公有云、私有云和混合云的普及,容器化技术越来越被大众使用,docker 相关应用和部署在工作中越来越多的被使用,本文以nginx的部署为例进行,如果只是单纯的安装nginx,可以参考《linux 系统下四种nginx安装方法》,本文是上篇的延续和拓展。

2 环境说明
名称版本
操作系统CentOS Linux release 7.9.2009 (Core)
dockerDocker version 20.10.14
docker-composedocker-compose version 1.25.1
nginx1.21.6
3 部署nginx 3.1 准备工作

创建文件夹

mkdir -p /data/nginx/conf.d /data/nginx/logs /data/nginx/letsencrypt /data/site

创建部署文件

vi /data/nginx/docker-compose.yml

输入如下信息

version: "3"
services:
  nginx:
    image: nginx:1.21.6
    restart: always
    container_name: nginx
    environment:
      - TZ=Asia/Shanghai
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /data/nginx/conf.d:/etc/nginx/conf.d
      - /data/nginx/logs:/var/log/nginx
      - /data/site:/usr/share/nginx/html
      - /data/nginx/letsencrypt:/etc/letsencrypt
      - /data/nginx/nginx.conf:/etc/nginx/nginx.conf
项目目录说明
配置文件夹/data/nginx/conf.d目录下存放default.conf
配置文件/data/nginx/nginx.conf主配置文件
日志文件夹/data/nginx/logserrors.log和acess.log
证书文件夹/data/nginx/letscrypt存放nginx的https证书
站点/data/site站点文件夹
部署文件/data/nginx/docker-compose.yml部署文件

**注意:**证书需要提前在域名购买网站进行申请。
目录创建完毕后,将文件放置对应的目录下
nginx.conf 和default.conf配置文件、证书文件、部署文件docker-compose.yml、站点文件
nginx配置文件获取方法:
nginx.conf和default.conf文件可以使用
1、拉取镜像

docker pull nginx:1.21.6 

2、运行镜像

docker run -d -p 8080:80 nginx:1.21.6

3、查看容器id

docker ps

4、进入容器

docker exec -it f424fd6f2315 /bin/bash

注意:如果使用的是alpine版本的nginx 进入容器的命令为:docker exec -it 33e8474cdd09 /bin/sh

查找容器中的default.conf和nginx.conf文件的位置

  • /etc/nginx/conf.d/default.conf
  • /etc/nginx/nginx.conf

5、退出容器

exit

6、拷贝

docker cp f424fd6f2315:/etc/nginx/conf.d/defaut.conf /data/nginx/donf.d
docker cp f424fd6f2315:/etc/nginx/nginx.conf /data/nginx

拷贝完毕
7、删除容器

docker stop f424fd6f2315
docker rm f424fd6f2315

目录结构

开具端口或者服务
centos7.9服务器默认是开具了ssh服务,nginx外部访问需要开具htttp和https或其对应的端口80和443端口

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
3.2 开始部署

启动部署

docker-compose up -d

测试
终端输入 curl IP

打开浏览器输入IP地址查看

细心的读者可能已经发现浏览器地址栏左侧的“不安全”字眼和图标,接下来配置SSL证书来让网站相对来说更安全点。

4 配置SSL证书

配置Nginx中“/data/nginx/conf.d/”目录下的“default.conf”文件。
新增如下内容

vi /data/nginx/conf.d/default.conf
server {
    # SSL 访问端口
    listen      443 ssl;
    # 绑定证书域名
    server_name jjyard.xyz;
    # 证书文件
    ssl_certificate     /etc/letsencrypt/jjyard.xyz_bundle.crt;
    # 私钥文件
    ssl_certificate_key /etc/letsencrypt/jjyard.xyz.key;
    ssl_session_timeout 5m;
    # 配置协议
    ssl_protocols       TLSv1.2 TLSv1.3;
    #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
    ssl_prefer_server_ciphers on;
    location / {
        root    /usr/share/nginx/html;
        index   index.html index.htm;
    }
}


查看运行容器 id

docker ps 

使用查看到的容器id进入容器
进入容器

docker exec -it 33e8474cdd09 /bin/bash

注意:如果使用的是alpine版本的nginx命令为:docker exec -it 33e8474cdd09 /bin/sh
验证nginx配置文件
nginx -t

重启容器

docker restart 33e8474cdd09

浏览器
输入:https://jjyard.xyz

浏览器中输入原
http://jjyard.xyz

目前是支持80和443端口的,可以将80端口强制跳转至443端口使用https协议访问
修改/data/nginx/conf.d/default.conf
添加如下信息

#填写绑定证书的域名
server_name server_name.xyz; 
#把http的域名请求转成https
return 301 https://$host$request_uri; 

重启容器

docker restart 33e8474cdd09

浏览器中输入http://jjyard.xyz
浏览器自动跳转https://jjyard.xyz

5 参考

Nginx 服务器 SSL 证书安装部署

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/840201.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号