docker部署nginx并实现https

news2024/11/17 7:44:53

文章目录

    • docker部署nginx并实现https
      • 1、服务器环境
      • 2、安装docker
      • 3、准备证书
      • 4、准备nginx配置文件和dockerfile文件
      • 5、创建nginx镜像与容器
      • 6、验证访问

docker部署nginx并实现https

1、服务器环境

[root@liuyanfen12 ~]#systemctl stop firewalld
[root@liuyanfen12 ~]#setenforce 0
#关闭防火墙和核心防护

image-20240503185711101

2、安装docker

[root@liuyanfen12 ~]#yum install -y yum-utils device-mapper-persistent-data lvm2
#安装依赖包
[root@liuyanfen12 ~]#yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#设置阿里云镜像源
[root@liuyanfen12 ~]#yum install -y docker-ce docker-ce-cli containerd.io
#安装Docker-CE(社区版)
[root@liuyanfen12 ~]#systemctl enable --now docker.service
#开机自启并立即启动
[root@liuyanfen12 ~]#systemctl status docker.service
#查看状态

image-20240503185922419

image-20240503190029727

image-20240503190127810

3、准备证书

[root@liuyanfen12 ~]#mkdir /opt/nginx -p
#创建目录
[root@liuyanfen12 ~]#cd /opt/nginx/
#切换
[root@liuyanfen12 nginx]#ls
[root@liuyanfen12 nginx]#vim certificate.sh
#编辑证书脚本
CA_SUBJECT="/O=luck/CN=ca.luck.com"
SUBJECT="/C=CN/ST=js/L=nj/O=luck/CN=www.luck.com"
SERIAL=34
EXPIRE=202002
FILE=luck.com

openssl req  -x509 -newkey rsa:2048 -subj $CA_SUBJECT -keyout ca.key -nodes -days 202002 -out ca.crt

openssl req -newkey rsa:2048 -nodes -keyout ${FILE}.key  -subj $SUBJECT -out ${FILE}.csr

openssl x509 -req -in ${FILE}.csr  -CA ca.crt -CAkey ca.key -set_serial $SERIAL  -days $EXPIRE -out ${FILE}.crt

chmod 600 ${FILE}.key ca.key
--------------------------------------------------------------------------------------------------------
#openssl req  -x509 -newkey rsa:2048 -subj $CA_SUBJECT -keyout ca.key -nodes -days 202002 -out ca.crt
-x509: 生成自签名的证书,而不是生成 CSR(证书签名请求)。
-newkey rsa:2048: 使用 RSA 算法生成一个新的密钥对,密钥长度为2048位。
-subj $CA_SUBJECT: 指定证书的主体信息,这里是定义的 CA 主体信息。
-keyout ca.key: 指定生成的私钥文件名为 ca.key。
-nodes: 创建的私钥不加密,即没有密码保护。
-days $EXPIRE: 设置证书有效期,这里是到2020年2月。
-out ca.crt: 指定生成的自签名CA证书文件名为 ca.crt
--------------------------------------------------------------------------------------------------------
#openssl req -newkey rsa:2048 -nodes -keyout ${FILE}.key  -subj $SUBJECT -out ${FILE}.csr
-newkey rsa:2048: 同上,创建一个新的RSA密钥对。
-keyout ${FILE}.key: 生成的服务器私钥文件名为 ${FILE}.key,此处为 kgc.com.key。
-subj $SUBJECT: 指定服务器证书的主体信息。
-out ${FILE}.csr: 生成的证书签名请求文件名为 ${FILE}.csr,此处为 kgc.com.csr。
--------------------------------------------------------------------------------------------------------
#openssl x509 -req -in ${FILE}.csr  -CA ca.crt -CAkey ca.key -set_serial $SERIAL  -days $EXPIRE -out
-req: 表明接下来的操作是基于一个证书请求文件。
-in ${FILE}.csr: 指定要使用的证书请求文件,即之前生成的 kgc.com.csr。
-CA ca.crt: 指定签发证书的CA证书文件,即第一步生成的 ca.crt。
-CAkey ca.key: 指定CA的私钥文件,用于签署新的证书。
-set_serial $SERIAL: 指定新证书的序列号。
-days $EXPIRE: 设置服务器证书的有效期。
-out ${FILE}.crt: 生成的服务器证书文件名为 ${FILE}.crt,此处为 kgc.com.crt。
--------------------------------------------------------------------------------------------------------
#chmod 600 ${FILE}.key ca.key
chmod 600: 改变文件权限,使其只有所有者有读写权限,增强安全性。
${FILE}.key 和 ca.key: 分别指服务器私钥和CA私钥文件,确保它们的访问权限受限
--------------------------------------------------------------------------------------------------------

[root@liuyanfen12 nginx]#chmod +x certificate.sh
#添加权限
[root@liuyanfen12 nginx]#./certificate.sh
#运行
Generating a 2048 bit RSA private key
..........................................................................................................+++
.................+++
writing new private key to 'ca.key'
-----
Generating a 2048 bit RSA private key
.....................+++
..+++
writing new private key to 'luck.com.key'
-----
Signature ok
subject=/C=CN/ST=js/L=nj/O=luck/CN=www.luck.com
Getting CA Private Key

[root@liuyanfen12 nginx]#ls
ca.crt  ca.key  certificate.sh  luck.com.crt  luck.com.csr  luck.com.key
[root@liuyanfen12 nginx]#cat luck.com.crt ca.crt > www.luck.com.crt
#使用cat命令将luck.com.crt和ca.crt两个文件的内容合并到一个新文件www.luck.com.crt中,这样做的目的是为了组合服务器证书和CA证书,使得Nginx或任何其他Web服务器能够通过单一文件提供完整的证书链给客户端,以便正确验证服务器证书
[root@liuyanfen12 nginx]#mv luck.com.key www.luck.com.key
#使用 mv 命令重命名luck.com.key为www.luck.com.key 为了与上面合并后的证书文件保持名称一致性,或者准备为www.dlsockerng.com子域名服务使用同一密钥对
[root@liuyanfen12 nginx]#ls
ca.crt  ca.key  certificate.sh  luck.com.crt  luck.com.csr  www.luck.com.crt  www.luck.com.key

image-20240503195855051

image-20240503200039116

4、准备nginx配置文件和dockerfile文件

[root@liuyanfen12 nginx]#ls
#上传nginx安装包,准备nginx.conf和Dockerfile文件
ca.crt  certificate.sh  luck.com.crt  nginx-1.12.0.tar.gz  www.luck.com.crt
ca.key  Dockerfile      luck.com.csr  nginx.conf           www.luck.com.key

#编辑dockerfile脚本
[root@liuyanfen12 nginx]#vim Dockerfile
FROM centos:7
MAINTAINER this is nginx image <nginx>
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make openssl openssl-devel
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
#加载ngx_http_ssl_module模块,该模块是处理SSL/TLS连接所必需的
--with-http_stub_status_module;make -j4 && make install
ENV PATH /usr/local/nginx/sbin:$PATH
ADD nginx.conf /usr/local/nginx/conf/nginx.conf
ADD www.luck.com.crt /usr/local/nginx/conf/
ADD www.luck.com.key /usr/local/nginx/conf/
EXPOSE 80
EXPOSE 443
CMD [ "/usr/local/nginx/sbin/nginx","-g","daemon off;" ]

[root@liuyanfen12 nginx]#vim nginx.conf
#修改nginx.conf配置文件,在server模块中添加配置(35行-42行)
      server {
        listen       80;
        listen 443 ssl;
        ssl_certificate /usr/local/nginx/conf/www.luck.com.crt;
        ssl_certificate_key /usr/local/nginx/conf/www.luck.com.key;
        ssl_session_cache shared:sslcache:20m;
        ssl_session_timeout 10m;
        server_name  localhost;
--------------------------------------------------------------------------------------------------------
listen 443 ssl;
#这行指定Nginx监听443端口,并启用SSL支持。Web浏览器默认通过443端口建立HTTPS连接
ssl_certificate /usr/local/nginx/conf/www.dockerng.com.crt;
#指定SSL证书文件的路径,这个路径指向合并了服务器证书和CA证书链的文件(如果适用),以
#便客户端在验证服务器身份时使用。
ssl_certificate_key /usr/local/nginx/conf/www.dockerng.com.key;
#指定与上述证书匹配的私钥文件路径。此私钥用于加密和解密服务器与客户端之间的通信内容
ssl_session_cache shared:sslcache:20m;
#配置一个共享的SSL会话缓存,大小为20MB。该缓存可以提高性能,通过复用已存在的SSL会话
#信息来减少重新协商和加密操作的开销
ssl_session_timeout 10m;
#设置SSL会话超时时间为10分钟。这意味着,在无活动期间达到这个时间长度后,客户端必须与
#服务器重新建立新的SSL会话或者恢复先前的会话(如果仍然有效)。这个值可以根据实际需求调
#整以平衡安全性与性能。
--------------------------------------------------------------------------------------------------------

image-20240503195321818

image-20240503195114699

image-20240503194954794

5、创建nginx镜像与容器

[root@liuyanfen12 ~]#docker pull centos:7
#拉取基础镜像centos:7
[root@liuyanfen12 ~]#docker images
#查看基础镜像信息
[root@liuyanfen12 nginx]#docker  build -t nginx:centos .
#生成镜像
[root@liuyanfen12 nginx]#docker images
#显示镜像信息
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
nginx        centos    c3f56b07162d   25 seconds ago   592MB
centos       7         eeb6ee3f44bd   2 years ago      204MB
[root@liuyanfen12 nginx]#docker run -d --name nginx -p 80:80 -p 443:443 nginx:centos
#创建容器并指定映射端口
618a521cf19a57ada8db2769b38fafcd2b09ff0065c2aa879ca7aed5c3fdd779
[root@liuyanfen12 nginx]#docker ps -a
#显示所有容器信息
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS                                                                      NAMES
618a521cf19a   nginx:centos   "/usr/local/nginx/sb…"   4 seconds ago   Up 3 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp   nginx

image-20240503191325193

image-20240503194658647

image-20240503192941835

6、验证访问

https://192.168.10.12/
#使用浏览器访问验证

image-20240503185215549

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1642995.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML/CSS1

1.前置说明 请点这里 2.img元素 格式&#xff1a; <img src"图片地址" alt"占位文字" width"图片宽度" height"图片高度">其中alt是当图片加载失败时显示的文字 而且不同内核的浏览器显示出来的占位文字的效果也是不尽相同的…

Django之单文件上传(以图片为例)

一&#xff0c;创建项目 初始化&#xff0c;数据迁移&#xff0c;创建superuser&#xff0c;创建app等 二&#xff0c;配置settings.py 1&#xff0c;配置数据库&#xff08;本作者使用的mysql&#xff09;&#xff0c;以前文章有提到 2&#xff0c;配置静态文件存放路径 STAT…

论文笔记ColdDTA:利用数据增强和基于注意力的特征融合进行药物靶标结合亲和力预测

ColdDTA发表在Computers in Biology and Medicine 的一篇一区文章 突出 • 数据增强和基于注意力的特征融合用于药物靶点结合亲和力预测。 • 与其他方法相比&#xff0c;它在 Davis、KIBA 和 BindingDB 数据集上显示出竞争性能。 • 可视化模型权重可以获得可解释的见解。 …

安卓硬件访问服务

安卓硬件访问服务 硬件访问服务通过硬件抽象层模块来为应用程序提供硬件读写操作。 由于硬件抽象层模块是使用C语言开发的&#xff0c; 而应用程序框架层中的硬件访问服务是使用Java语言开发的&#xff0c; 因此&#xff0c; 硬件访问服务必须通过Java本地接口&#xff08;Jav…

EPAI手绘建模APP演示板、材质编辑器、样式编辑器

(11) 更多 图 74 更多工具栏 ① 演示板&#xff1a;打开关闭演示板。演示板用来显示从设备导入的模型图纸图片或者打开模型建模教程网页&#xff0c;是建模过程中一个辅助功能。有些设备有小窗口功能有些没有&#xff0c;对于没有小窗口功能的设备&#xff0c;通过演示板能够在…

A Bug‘s Life (并查集)

//新生训练 #include <iostream> #include <algorithm> using namespace std; const int N 5000; int p[N], sz[N]; int n, m; int find(int x) {if (p[x] ! x)p[x] find(p[x]);return p[x]; } int main() {int T;scanf("%d", &T);for (int k 1; …

车载电子电器架构 —— 通信安全E2E Rollng counter

车载电子电器架构 —— 通信安全E2E Rollng counter 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要…

17_Scala面向对象高阶功能

文章目录 1.继承1.1 构造对象时,父类对象优于子类对象1.2父类主构造有参数,子类必须要显示地调用父类主构造器并传值 2.封装3.抽象3.1抽象定义3.2子类继承抽象类3.3抽象属性 4.伴生对象4.1创建类和伴生对象4.2调用 1.继承 –和Java一样,权限protected , public.父类定义子类用…

[嵌入式系统-67]:RT-Thread-组件:虚拟-设备文件系统DFS,以目录结构和文件的方式存储和管理各种各样的数据

目录 虚拟文件系统 1. DFS 简介 DFS 架构 POSIX 接口层 虚拟文件系统层 设备抽象层 2. 挂载管理&#xff1a;构建统一的文件系统目录 初始化 DFS 组件 注册文件系统 将存储设备注册为块设备 格式化文件系统 挂载文件系统 卸载文件系统 3. 文件管理 打开和关闭文…

分布式与一致性协议之一致哈希算法(三)

一致哈希算法 如何使用一致哈希算法实现哈希寻址 我们一起来看一个例子&#xff0c;对于1000万个key的3节点KV存储&#xff0c;如果我们使用一致哈希算法增加1个节点&#xff0c;即3节点集群变为4节点集群&#xff0c;则只需要迁移24.3%的数据,如代码所示 package mainimpor…

时间日志格式的统一和定制

返回当前格式的时间没有错误&#xff0c;但是不符合中国人的阅读习惯 解决&#xff1a; 方案一&#xff1a;JsonFormat 解决后端 传到 前端格式问题 依赖&#xff1a; <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jack…

brpc profiler

cpu profiler cpu profiler | bRPC MacOS的额外配置 在MacOS下&#xff0c;gperftools中的perl pprof脚本无法将函数地址转变成函数名&#xff0c;解决办法是&#xff1a; 安装standalone pprof&#xff0c;并把下载的pprof二进制文件路径写入环境变量GOOGLE_PPROF_BINARY_PA…

Spring Boot与JSP的浪漫邂逅:轻松构建动态Web应用的秘诀

本文介绍 Spring Boot 集成 JSP。 1、pom.xml 增加对 JSP 的支持 Spring Boot 的默认视图支持是 Thymeleaf 模板引擎&#xff0c;如果想要使用 JSP 页面&#xff0c;需要配置 servlet 依赖和 tomcat 的支持。 在 pom.xml 文件中增加如下代码&#xff1a; <!-- servlet依赖 -…

Sarcasm detection论文解析 |使用基于多头注意力的双向 LSTM 进行讽刺检测

论文地址 论文地址&#xff1a;https://ieeexplore.ieee.org/document/8949523 论文首页 笔记框架 使用基于多头注意力的双向 LSTM 进行讽刺检测 &#x1f4c5;出版年份:2020 &#x1f4d6;出版期刊:IEEE Access &#x1f4c8;影响因子:3.9 &#x1f9d1;文章作者:Kumar Avinas…

使用docker-compose编排lnmp(dockerfile)完成wordpress

文章目录 使用docker-compose编排lnmp&#xff08;dockerfile&#xff09;完成wordpress1、服务器环境2、Docker、Docker-Compose环境安装2.1 安装Docker环境2.2 安装Docker-Compose 3、nginx3.1 新建目录&#xff0c;上传安装包3.2 编辑Dockerfile脚本3.3 准备nginx.conf配置文…

WebAssembly 入门教程 c++、python编译wasm

WebAssembly 入门 了解 wasm 使用场景&#xff0c;复杂对象传递和经验法则。 简介 WebAssembly 是一种新的编码方式&#xff0c;可以在现代的网络浏览器中运行。它是一种低级的类汇编语言&#xff0c;具有紧凑的二进制格式&#xff0c;可以接近原生的性能运行&#xff0c;并…

【C++】学习笔记——vector_2

文章目录 七、vector2. vecotr的使用3. vector的模拟实现 未完待续 七、vector 2. vecotr的使用 上节我们以二维数组结束&#xff0c;这一节我们以二维数组开始。 // 二维数组 vector<vector<int>> vv;二维数组在底层是连续的一维数组。vv[i][j] 是怎样访问的&a…

FBA头程海运发货流程是怎样的?

FBA头程发货作为整个FBA流程的关键一环&#xff0c;更是直接影响到商品从起点到终点的流通效率和成本。其中&#xff0c;海运作为一种经济、稳定的运输方式&#xff0c;在FBA头程发货中扮演着举足轻重的角色。那么&#xff0c;FBA头程海运发货流程究竟是怎样的呢? 1、装箱与发…

轻松应对数据恢复挑战:雷神笔记本,不同情况不同策略

在数字化时代&#xff0c;数据无疑是我们生活中不可或缺的一部分。无论是重要的工作文件、珍贵的家庭照片&#xff0c;还是回忆满满的视频&#xff0c;一旦丢失&#xff0c;都可能给我们的生活带来诸多不便。雷神笔记本作为市场上备受欢迎的电脑品牌&#xff0c;用户在使用过程…

Kotlin: Expecting a ‘>‘

数组值为任意类型&#xff0c;声明报错: Kotlin: Expecting a > var anyArr1: Array<Any?> arrayOf("a", "b", "c", true, 34)原因是&#xff1a; // var anyArr1: Array<Any?> arrayOf("a", "b", "c…