docker安装nginx支持ssl 实现https访问(完整版)

news2024/11/19 3:27:10

全文目录,一步到位

  • 1.前言简介
    • 1.1 专栏传送门
      • 1.1.1 本文简介
  • 2. docker安装nginx支持ssl
    • 2.0 准备ssl证书(例: 阿里云)
      • 2.0.1 配置域名解析
      • 2.0.2 找到数字证书管理服务并签发ssl证书
      • 2.0.3 选择默认证书 填写域名 创建
      • 2.0.4 提交审核, 签发成功
      • 2.0.5 解压并上传到宿主机ssl路径下
    • 2.1 安装docker(有跳过)
    • 2.2 linux的操作方式
      • 2.2.1 创建需要挂载的宿主机目录
      • 2.2.2 创建并启动nginx容器(普通版)
      • 2.2.3 容器复制nginx配置到宿主机
      • 2.2.4 删除nginx容器
      • 2.2.5 创建新nginx容器 配置ssl证书
      • 2.2.6 修改nginx.conf配置
    • 2.3 查看日志与容器方法
      • 2.3.1 查看容器日志
      • 2.3.2 检查目录挂载是否成功
      • 2.3.3 最终效果
  • 3. 文章的总结与预告
    • 3.1 本文总结


1.前言简介

1.1 专栏传送门

=> docker实用(安装/操作)专栏传送门 <=
=> linux普通方式安装nginx并支持ssl <=

1.1.1 本文简介

本文使用docker快速安装nginx 并支持ssl证书

  • 包含ssl证书如何签发
  • ssl证书下载
  • docker启动容器步骤
  • 启动注意事项

2. docker安装nginx支持ssl

2.0 准备ssl证书(例: 阿里云)

2.0.1 配置域名解析

在这里插入图片描述

2.0.2 找到数字证书管理服务并签发ssl证书

在这里插入图片描述

2.0.3 选择默认证书 填写域名 创建

数量用光了可以购买(操作错误删除也算一次)
在这里插入图片描述

2.0.4 提交审核, 签发成功

审核页面跳过
签发成功后点击下载 选择nginx
在这里插入图片描述

2.0.5 解压并上传到宿主机ssl路径下

2.2.1 中创建文件夹 找到ssl文件夹 放入即可
在这里插入图片描述

2.1 安装docker(有跳过)

=> 传送门: linux系统上安装docker

2.2 linux的操作方式

2.2.1 创建需要挂载的宿主机目录

mkdir -p /usr/local/src/docker/nginx/{conf,html,logs,ssl}

2.2.2 创建并启动nginx容器(普通版)

随意启动一个nginx容器, 用于复制里面配置文件

  • name: 容器名字
  • -p 宿主机:容器
  • -d 容器在后台运行
docker run --name nginx -p 80:80 -d nginx

2.2.3 容器复制nginx配置到宿主机

复制配置文件到宿主机路径 左是容器路径(docker) 右是宿主机路径(linux)

docker cp nginx:/etc/nginx/nginx.conf /usr/local/src/docker/nginx/conf/
docker cp nginx:/etc/nginx/conf.d /usr/local/src/docker/nginx

2.2.4 删除nginx容器

复制成功后,nginx容器删除

# 基础写法
docker stop nginx
docker rm nginx

# 简化写法
docker rm -f nginx

2.2.5 创建新nginx容器 配置ssl证书

docker run --name nginx -p 80:80 -p 443:443 \
-v /usr/local/src/docker/nginx/html:/usr/share/nginx/html \
-v /usr/local/src/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf/ \
-v /usr/local/src/docker/nginx/conf.d:/etc/nginx/conf.d/ \
-v /usr/local/src/docker/nginx/logs:/var/log/nginx \
-v /usr/local/src/docker/nginx/ssl:/etc/nginx/ssl \
--privileged=true -d --restart=always nginx

参数解释

挂载到上面创建的路径下 左边是宿主机 右边是容器

  • - name: 容器名
  • - p: 映射端口: 容器端口
  • -v: 宿主机路径: 容器路径
  • --privileged=true: 使容器拥有root权限
  • -d : 后台运行
  • --restart=always: 自启动(docker启动后)
  • nginx: 指定镜像(没有会自动下载latest版本)

2.2.6 修改nginx.conf配置

ssl配置模板如下:

`(坑)特别注意: 配置路径必须是容器内的路径`
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    include /etc/nginx/default.d/*.conf;

    server {
	    listen 80;
	    #填写绑定证书的域名
	    server_name test.*.cn;
	    #把http的域名请求转成https,相当于用户访问http也可以自动跳转到https,避免出现网页提示不安全
	    return 301 https://$host$request_uri; 
    }    

    server {
        listen  443 ssl;
	    server_name  mkdd.aisce.net; 
	    #证书文件名称
        ssl_certificate_key /etc/nginx/ssl/test.*.cn.key;
        #私钥文件名称 .crt和.pem都可以用
        ssl_certificate /etc/nginx/ssl/test.*.cn.pem; 
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;

		location / {
            root   /usr/share/nginx/html;
			try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
		
		location /aaa/ {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://localhost:9666/;
		}

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

2.3 查看日志与容器方法

2.3.1 查看容器日志

cd /usr/local/src/docker/nginx/logs
docker container logs -f access.log
docker container logs -f error.log

2.3.2 检查目录挂载是否成功

进入容器控制台

  • 找到对应容器路径查看文件是否存在
  • 配置修改是否生效(基本都能生效, 不生效检查宿主机文件读写权限)
docker exec -it nginx bash

2.3.3 最终效果

在这里插入图片描述
[操作结束]


3. 文章的总结与预告

3.1 本文总结

买域名会赠送免费的ssl证书 可以测试用

  • 证书现在是三个月过期
  • 审核, 等待 签发 下载

nginx进行配置

  1. nginx.conf文件位置写容器路径 千万不要写宿主机路径
  2. 容器内也可以随意建立(mkdir)文件夹的 挂载目录对应上即可
  3. html文件夹完全可以不用, 可以参考(2-上条)

总之灵活使用 挂载的目的也是文件内容相互同步



@author: pingzhuyan
@description: ok
@year: 2024

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

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

相关文章

<网络安全>《83 微课堂<国家数据要素总体框架>》

1 总体框架 国家数据要素化总体框架由“六横两纵”共八个关键环节构成。 2 国家数据基础设施&#xff08;NDI&#xff09; 最底部第一层是国家数据基础设施&#xff08;NDI&#xff09;。国家数据基础设施&#xff08;NDI&#xff09;是经济社会进入数据要素化发展新阶段后新…

Vue面试经验2

Vue 你说你在vue项目中实现了自定义指令&#xff0c;如何实现 全局指令在main.js入口文件中实现 使用方法&#xff1a;v-指令名称 每个钩子函数都有两个参数&#xff08;ele,obj&#xff09; ele:绑定指令的元素 obj:指令的一些信息&#xff08;比如绑定指令的值&#xff0c…

Python Pendulum:用代码提升您的时间管理技能

更多Python学习内容&#xff1a;ipengtao.com Python中的Pendulum库是一个强大的日期和时间处理工具&#xff0c;提供了丰富的功能和灵活的接口&#xff0c;用于处理日期、时间、时区等相关操作。本文将全面介绍Pendulum库的主要功能、使用方法和实际应用场景&#xff0c;并给出…

基于ESP32和ESP8266的物联网开发过程(二)

在做这个项目前&#xff0c;也做了一些调研。项目的初衷是想要用于智能家居。我比较了小米IoT、阿里云、ESPHOME、巴沙云、点灯科技和ONENET等几个平台。最终选择了Onenet&#xff0c;部分原因是之前用过它的多协议版本&#xff0c;但现在这个版本已经下线了。 小米IoT的公测名…

使用FFmpeg处理RTSP视频流并搭建RTMP服务器实现图片转直播全流程

目录 一、FFmpeg安装与配置教程二、搭建并配置Nginx RTMP服务器三、从RTSP视频流提取帧并保存为图片四、将图片序列转换为视频五、将视频推送为直播流六、将图片序列推送为直播流 在实时音视频领域&#xff0c;我们经常需要处理从各种源&#xff08;如摄像头&#xff09;获取的…

Java练手项目 个人学习等选题参考

难度系数说明&#xff1a; 难度系数用来说明项目本身进行分析设计的难度 难度系数大于1的项目是非常值得反复学习的&#xff0c;从项目中成长 前言 大家好&#xff0c;我是二哈喇子&#xff0c;此博文整理了各种项目需求 要从本篇文章下的项目中学习的思路&#xff1a; 用的…

【架构】MVC架构模式 三层架构

1 不使用MVC架构模式完成银行账户转账 <% page contentType"text/html;charsetUTF-8" language"java" %> <html><head><base href"${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.…

[MRCTF2020]Ez_bypass1 and [网鼎杯 2020 青龙组]AreUSerialz1()php语言基础学习,以及序列化概念的基本了解

1.[MRCTF2020]Ez_bypass1 &#xff08;1&#xff09;打开环境后它是一串很长并且看起来非常混乱的代码&#xff0c;看不懂那咱就先不管&#xff0c;直接查看源码 &#xff08;2&#xff09;看了之后可以发现它涉及到很多东西 首先就是要进行一个仔细的代码审计&#xff0c;分…

网络基础-ICMP协议

ICMP&#xff08;Internet Control Message Protocol&#xff0c; Internet控制消息协议&#xff09; ICMP协议是IP协议的辅助协议&#xff0c;用于在IP网络上发送控制消息&#xff0c;它通常被用于诊断网络故障、执行网络管理任务以及提供一些错误报告&#xff1b;对于收集各…

XWiki 服务没有正确部署在tomcat中,如何尝试手动重新部署?

1. 停止 Tomcat 服务 首先&#xff0c;您需要停止正在运行的 Tomcat 服务器&#xff0c;以确保在操作文件时不会发生冲突或数据损坏&#xff1a; sudo systemctl stop tomcat2. 清空 webapps 下的 xwiki 目录和 work 目录中相关的缓存 删除 webapps 下的 xwiki 目录和 work …

回炉重造java----单列集合(List,Set)

体系结构: 集合主要分为两种&#xff0c;单列集合collection和双列集合Map&#xff0c;区别在于单列集合一次插入一条数据&#xff0c;而双列的一次插入类似于key-value的形式 单列集合collection 注:红色的表示是接口&#xff0c;蓝色的是实现类 ①操作功能: 增加: add()&am…

六级仔细阅读

画两到三个词&#xff0c;精准定位 要原文和同义都满足才选 先看题目&#xff0c;在看原文&#xff0c;不要先看选项 做不出答案就继续往下读&#xff0c;读出来了就不用继续读了 分清楚是问为什么还是是什么&#xff0c;是什么看前面&#xff0c;为什么看后面 不知道就优先…

三、配置带HybridCLR的ARCore开发环境

预告 本专栏将介绍如何使用这个支持热更的AR开发插件&#xff0c;快速地开发AR应用。 专栏&#xff1a; Unity开发AR系列 插件简介 通过热更技术实现动态地加载AR场景&#xff0c;简化了AR开发流程&#xff0c;让用户可更多地关注Unity场景内容的制作。 “EnvInstaller…”支…

Java JVM 浅析

为什么要有JVMJVM是什么&#xff1f;JVM的工作流程和组成部分JVM规范和JVM实现JVM原理详解 带着以上问题&#xff0c;我将尝试对JVM作出一些简单的介绍。 一、JVM 简介 在90年代初&#xff0c;软件开发面临一个大问题&#xff0c;即不同的操作系统和硬件架构要求开发不同的版本…

【Java代码审计】代码审计的方法及常用工具

【Java代码审计】代码审计的方法及常用工具 代码审计的常用思路代码审计辅助工具代码编辑器测试工具反编译工具Java 代码静态扫描工具 代码审计的常用思路 1、接口排查&#xff08;“正向追踪”&#xff09;&#xff1a;先找出从外部接口接收的参数&#xff0c;并跟踪其传递过…

3DGS+3D Tiles融合已成 ,更大的场景,更细腻的效果~

最近国外同行Kieran Farr发布了一个他制作的3D GussianSplatting(高斯泼溅)Google Map 3D Tiles的融合叠加的demo案例&#xff08;如下所示&#xff09;。 准确来说这是一个数据融合的实景场景&#xff0c;该实景场景使用了倾斜三维和3D GussianSplatting两种实景表达技术&…

深入理解Java TreeSet:实现与使用案例分析

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

【WPF学习笔记(一)】WPF应用程序的组成及Window类介绍

WPF应用程序的组成及Window类介绍 WPF应用程序的组成及Window类介绍前言正文1、WPF介绍1.1 什么是WPF1.2 WPF的特点1.3 WPF的控件分类 2、XAML介绍2.1 XAML的定义2.2 XAML的特点2.3 XAML的命名空间 3、WPF应用程序组成3.1 App.config3.2 App.xaml3.3 App.xaml.cs3.4 MainWindow…

react18【实战】tab切换,纯前端列表排序(含 lodash 和 classnames 的安装和使用)

技术要点 动态样式 className{tabItem ${currentType item.value && "active"}}安装 lodash npm i --save lodash使用 lodash 对对象数组排序&#xff08;不会改变源数组&#xff09; _.orderBy(dataList, "readNum", "desc")src\De…

十二种网络威胁防护方案

一、SQL注入 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严&#xff0c;攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句&#xff0c;在管理员不知情的情况下实现非法操作&#xff0c;以此来实现欺骗数据库服务器执行非授权的任…