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

全文目录,一步到位

  • 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【算法与数据结构】数组

文章目录 前言数组数组的定义数组的基本操作增加元素删除元素修改元素查找元素 C STL 中的数组arrayvector Python3 中的列表访问更改元素值遍历列表检查列表中是否存在某元素增加元素删除元素拷贝列表总结 Python3 列表的常用操作 参考资料写在最后 前言 本系列专注更新基本数…

Acrobat Pro DC 2023 for Mac:PDF处理的终极解决方案

Acrobat Pro DC 2023 for Mac为Mac用户提供了PDF处理的终极解决方案。它具备强大的文档处理能力&#xff0c;无论是查看、编辑还是创建PDF文件&#xff0c;都能轻松胜任。在编辑功能方面&#xff0c;Acrobat Pro DC 2023支持对文本、图像进行精准的修改和调整&#xff0c;还能添…

2024-05-10 Ubuntu上面使用libyuv,用于转换、缩放、旋转和其他操作YUV图像数据,测试实例使用I420ToRGB24

一、简介&#xff1a;libyuv 最初是由Google开发的&#xff0c;主要是为了支持WebRTC项目中的视频处理需求。用于处理YUV格式图像数据的开源库。它提供了一系列的函数&#xff0c;用于转换、缩放、旋转和其他操作YUV图像数据。 二、执行下面的命令下载和安装libyuv。 git clo…

杰发科技AC7801——ADC之Bandgap和内部温度计算

0. 参考 电流模架构Bandgap设计与仿真 bandgap的理解&#xff08;内部带隙电压基准&#xff09; ​ ​ 虽然看不懂这些公式&#xff0c;但是比较重要的一句应该是这个&#xff1a;因为传统带隙基准的输出值为1.2V ​ 1. 使用 参考示例代码。 40002000是falsh控制器寄…

LeetCode 112. 路径总和 || LeetCode 113. 路径总和ii

LeetCode 112. 路径总和 1、题目 题目链接&#xff1a;112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true…

Qt三方库:QuaZIP介绍、编译和使用

前言 Qt使用一些压缩解压功能&#xff0c;探讨过libzip库&#xff0c;zlib库&#xff0c;libzip库比较原始&#xff0c;还有其他库&#xff0c;都比较基础&#xff0c;而在基础库之上&#xff0c;又有高级封装库&#xff0c;Qt中的QuaZIP是一个很好的选择。Quazip是一个用于压缩…

Win11安装Docker Desktop运行Oracle 11g 【详细版】

oracle docker版本安装教程 步骤拉取镜像运行镜像进入数据库配置连接数据库&#xff0c;修改密码Navicat连接数据库 步骤 拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g运行镜像 docker run -d -p 1521:1521 --name oracle11g registry.cn-ha…

MySQL的表级锁

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;面经 ⛺️稳中求进&#xff0c;晒太阳 表级锁 介绍 对于表锁&#xff0c;分为两类&#xff1a; 表共享读锁表独占写锁 语法 1. 加锁&#xff1a;lock tables 表名... read/write 2.…

Multitouch for Mac:手势自定义,提升工作效率

Multitouch for Mac作为一款触控板手势增强软件&#xff0c;其核心功能在于手势的自定义和与Mac系统的深度整合。通过Multitouch&#xff0c;用户可以轻松设置各种手势&#xff0c;如三指轻点、四指左右滑动等&#xff0c;来执行常见的任务&#xff0c;如打开应用、切换窗口、滚…

网络编程——Socket——模拟用户登录

功能一&#xff1a;模拟用户登录 功能二&#xff1a;实现客户发送登录用户信息&#xff0c;服务器端显示登录信息并响应给客户端登录成功 这里设置的用户登录信息为&#xff1a;admin&#xff0c;123456 实现&#xff1a; 1.首先&#xff0c;服务端创建并启动服务器&#x…

MyBatis——MyBatis入门程序

一、数据准备 二、开发步骤 1、引入依赖 <dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.15</version></dependency><dependency><groupId>c…

如何打开远程桌面连接?

远程桌面连接是一项强大的功能&#xff0c;它允许我们远程访问其他计算机&#xff0c;并在远程计算机上进行操作。这对于远程办公、技术支持和远程培训等场景非常有用。本文将介绍如何在不同操作系统中打开远程桌面连接。 Windows系统 在Windows操作系统中&#xff0c;打开远程…

算法练习day7

四数相加II 代码随想录 0454.四数相加II 454. 四数相加 II - 力扣&#xff08;LeetCode&#xff09; &#xff08;用时&#xff1a;0.5小时&#xff09; 思路 本道题是需要在四个数组中&#xff0c;各找一个数&#xff0c;这些数加起来能够等于0&#xff0c;那么就是答案元…

mysql基础概念

文章目录 登录mysqlmysql和mysqld数据库操作主流数据库MYSQL架构SQL分类 登录mysql 登录mysql连接服务器&#xff0c;mysql连接时可以指明主机用-h选项&#xff0c;然后就可以指定主机Ip地址&#xff0c;-P可以指定端口号 -u指定登录用户 -P指定登录密码 查看系统中有无mysql&…

【系统架构师】-选择题(十二)计算机网络

1、网闸的作用&#xff1a;实现内网与互联网通信&#xff0c;但内网与互联网不是直连的 2、管理距离是指一种路由协议的路由可信度。15表示该路由信息比较可靠 管理距离越小&#xff0c;它的优先级就越高&#xff0c;也就是可信度越高。 0是最可信赖的&#xff0c;而255则意味…

(Java)心得:LeetCode——11.盛最多水的容器

一、原题 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容…

【C++】CentOS环境搭建-安装CATCH2

【C】CentOS环境搭建-安装CATCH2 1.克隆Catch2仓库2. 进入Catch2目录3. 创建一个构建目录4. 使用CMake生成构建系统&#xff08;以及可能的编译&#xff09;5.安装Catch2&#xff08;可选&#xff0c;根据你的需求&#xff09; 1.克隆Catch2仓库 git clone https://github.com…

ansible部署lamp架构

搭建参考&#xff1a;ansible批量运维管理-CSDN博客 定义ansible主机清单 [rootansible-server ~]# vim /etc/hosts 192.168.200.129 host01 192.168.200.130 host02 [rootansible-server ~]# vim /etc/ansible/hosts [webserver] host01 host02 在ansible端编写index.html…

08.1.自定义图形

自定义图形 创建图形 随便选择几个参数直接添加 选择自定义折线图形查看

一键追爆款,GPT一键改文‌‍‬⁣⁡​⁤⁢​⁢⁡⁣‬‍‌​​‬ ​‍⁤‬ ‬⁡⁡⁡‍‌‬⁡⁡⁢‬⁤⁢⁢⁤​‍‌​​‬ ​⁣‌,绘唐3,绘唐工具

ai画影满足你的制作要求 一键追爆款&#xff0c;GPT一键改文 AI推文小说&漫画解说&解压混剪 人物定义&#xff0c;角色定义&#xff0c;lora转换&#xff0c;模型转换&#xff0c;可视化参考满足 一键追爆款 一键挂机生成&#xff0c;效果更精彩&#xff0c;使用更方…