docker部署nginx并实现https

文章目录

    • 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.comopenssl req  -x509 -newkey rsa:2048 -subj $CA_SUBJECT -keyout ca.key -nodes -days 202002 -out ca.crtopenssl req -newkey rsa:2048 -nodes -keyout ${FILE}.key  -subj $SUBJECT -out ${FILE}.csropenssl x509 -req -in ${FILE}.csr  -CA ca.crt -CAkey ca.key -set_serial $SERIAL  -days $EXPIRE -out ${FILE}.crtchmod 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.mzph.cn/diannao/6455.shtml

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

相关文章

【c++】继承学习(二):探索 C++ 中派生类的默认机制与静态成员共享

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;c笔记仓 目录 1.派生类的默认成员函数2.继承与友元3.继承与静态成员 朋友们大家好&#xff0c;本篇文章我们来学习继承的第二部分 1.派生类的默认成员函数 来看下面的类&#xff1a; class Person…

Delta lake with Java--分区表

今天尝试一下将昨天的数据操作建立的表换成分区表&#xff0c;参考Delta Lake Up and Running做法用分区表的方式来更新数据。还要比较一下分区表的查询与非分区表的查询&#xff0c;结果显示分区表的查询速度要比非分区表要快。直接上代码&#xff1a; import io.delta.table…

发表博客之:transformer 架构 推理时候运算流程详细讲解,以及变长推理支持,小白都可以看得懂,AI推理工程师必备技能!

文章目录 [发表博客之&#xff1a;transformer 架构 推理时候运算流程详细讲解&#xff0c;以及变长推理支持&#xff0c;小白都可以看得懂&#xff0c;AI推理工程师必备技能&#xff01;](https://cyj666.blog.csdn.net/article/details/138439826)总结一下高性能变长推理 发表…

定点乘除法

目录 一、定点乘法 1.串行乘法器 2.并行乘法器 二、定点除法 1.笔算除法 2.机器除法 一、定点乘法 1.串行乘法器 1.符号位单独处理&#xff0c;两数的符号位按异或运算得到&#xff0c;而乘积的数值部分则是两个正数相乘之积。 2.过程 &#xff08;1&#xff09; 由乘…

「2024年」前端开发常用工具函数总结 TypeScript

前言 在前端开发中&#xff0c;工具函数是提高代码复用率、保持代码整洁和增加开发效率的关键。使用 TypeScript 编写工具函数不仅可以帮助开发者捕捉到更多的类型错误&#xff0c;还可以提供更清晰的代码注释和更智能的代码补全。下面是一些在 TypeScript 中常用的前端开发工…

Java如何获取当前日期和时间?

Java如何获取当前日期和时间&#xff1f; 本文将为您介绍 Java 中关于日期和时间获取的方法&#xff0c;以及介绍 Java 8 中获取日期和时间的全新API。 1、 System.currentTimeMillis() 获取标准时间可以使用 System.currentTimeMillis() 方法来获取&#xff0c;此方法优势是…

【C语言】详解预处理

、 最好的时光&#xff0c;在路上;最好的生活&#xff0c;在别处。独自上路去看看这个世界&#xff0c;你终将与最好的自己相遇。&#x1f493;&#x1f493;&#x1f493; 目录 •✨说在前面 &#x1f34b;预定义符号 &#x1f34b; #define • &#x1f330;1.#define定义常…

ControlNet官方资源链接【ControlNet论文原文】【持续更新中~】

ControlNet官方资源链接 ControlNet论文原文&#xff1a;https://arxiv.org/abs/2302.05543ControlNet官方GitHub&#xff1a;https://github.com/lllyasviel/ControlNetControlNet 1.1官方GitHub&#xff1a;https://github.com/lllyasviel/ControlNet-v1-1-nightlyControlNe…

phpMyAdmin增加自定义IP登录教程

phpMyAdmin增加自定义IP登录教程 1、打开phpMyAdmin目录&#xff0c; 在此目录下是否有config.sample.inc.php文件&#xff0c;如果存在&#xff0c;那么将其改名为config.inc.php&#xff08;为避免修改失误所造成的损失&#xff0c;强烈建议先备份config.sample.inc.php文件…

UnityWebGL使用sherpa-ncnn实时语音识别

k2-fsa/sherpa-ncnn&#xff1a;在没有互联网连接的情况下使用带有 ncnn 的下一代 Kaldi 进行实时语音识别。支持iOS、Android、Raspberry Pi、VisionFive2、LicheePi4A等。 (github.com) 如果是PC端可以直接使用ssssssilver大佬的 https://github.com/ssssssilver/sherpa-ncn…

[嵌入式系统-62]:RT-Thread-内核:多核CPU SMP的支持与移植

目录 RT-Thread SMP 介绍与移植 1. 多核的优点 2. 多核启动 2.1 概述 2.2 CPU0 启动流程 2.3 次级 CPU 启动流程 3. 多核调度 3.1 任务特性 3.2 调度策略 4. SMP 内核接口 处理器间中断 IPI OS Tick 自旋锁 spinlock 任务绑定 4. SMP移植说明 编译环境准备 创…

配置网关,解决本地连接不上Linux虚拟机的问题

在Window环境下&#xff0c;使用远程终端工具连接不了VMware搭建的Linux虚拟机&#xff08;CentOS 7&#xff09;&#xff0c;并且在命令行ping不通该Linux虚拟机的IP地址。下面通过配置网关解决本地与Linux虚拟机连接问题&#xff1a; 1 查看虚拟机网关地址 在VMware虚拟机上…

数据库开发关键之与DQL查询语句有关的两个案例

案例 案例1 条件分页查询 查看项目经理提供给我们的需求文档 模糊匹配的含义是 只要包含"张"就可以 use dduo;-- 按照需求完成员工管理的条件分页查询 根据输入条件 查询第一页的数据 每页展示10条记录 -- 输入条件&#xff1a; -- 姓名&#xff1a; 张 -- 年龄&…

基于YOLOv8的水稻虫害识别系统,加入BiLevelRoutingAttention注意力进行创新优化

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文摘要&#xff1a;基于YOLOv8的水稻虫害识别&#xff0c;阐述了整个数据制作和训练可视化过程&#xff0c;并加入BiLevelRoutingAttention注意力进行优化&#xff0c;最终mAP从原始的 0.697提升至0.732 博主简介 AI小怪兽&#xff…

c语言从入门到函数速成(2)

温馨提醒&#xff1a;本篇文章适合人群&#xff1a;刚学c又感觉那个地方不怎么懂的同学以及以及学了一些因为自身原因停学一段时间后又继续学​​​c的学 好&#xff0c;正片开始&#xff01; 数组 概念&#xff1a;数组中存放的是1个或者多个数据&#xff0c;但是数组元素个…

由于找不到msvcr110.dll,无法继续执行代码的解决方法

在日常使用计算机的过程中&#xff0c;可能会遇到系统提示缺少msvcr110.dll文件的情况&#xff0c;这一问题往往导致某些应用程序无法正常运行。幸运的是&#xff0c;有多种方法可以有效应对这一困境&#xff0c;帮助您的计算机恢复顺畅运作。以下是解决计算机丢失msvcr110.dll…

JavaWeb--1.Servlet

Servlet&#xff08;基础&#xff09; 1、配置依赖&#xff1a; ​ 在pom.xml文件中加入相关依赖 <dependencies><dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>5.0.0&l…

Python数据分析案例43——Fama-French回归模型资产定价(三因子/五因子)

案例背景 最近看到要做三因子模型的同学还挺多的&#xff0c;就是所谓的Fama-French回归模型&#xff0c;也就是CAMP资本资产定价模型的升级版&#xff0c;然后后面还升级为了五因子模型。 看起来眼花缭乱&#xff0c;其实抛开金融资产定价的背景&#xff0c;从机器学习角度来…

HTML_CSS学习:常用文本属性

一、文本颜色 相关代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>文本颜色</title><style>div{font-size: 90px;}.atguigu1{color: #238c20;}.atguigu2{color: rgb(2…

【b站vue教程】1 宏观视角下的浏览器——前端大厂面试必刷:前后端必学的网络安全浏览器工作原理:从入门到精通全套【附带所有源码】

课程地址&#xff1a;【前端大厂面试必刷&#xff1a;前后端必学的网络安全浏览器工作原理&#xff1a;从入门到精通全套【附带所有源码】】 https://www.bilibili.com/video/BV1UL41157hP/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 1、宏…