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

devtools/2024/11/14 19:55:47/

全文目录,一步到位

  • 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启动容器步骤
  • 启动注意事项

dockernginxssl_13">2. docker安装nginx支持ssl

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

2.0.1 配置域名解析

在这里插入图片描述

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

在这里插入图片描述

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

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

2.0.4 提交审核, 签发成功

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

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

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

docker_30">2.1 安装docker(有跳过)

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

linux_32">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

ssl_61">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.ppmy.cn/devtools/31602.html

相关文章

文件导入导出【开发实践】

文章目录 一、背景和基础知识1.1 文件导入1.2 文件导出1.3 技术背景1.4 Excel的基本知识1.5 文件导入/导出流程 二、使用EasyExcel完成读写Excel操作2.1 创建实体类并完成映射2.1.1 用在字段上的注解2.1.1.1 ExcelProperty&#xff08;最重要&#xff09;2.1.1.2 ColumnWidth2.…

Elasticsearch:对 Java 对象的 ES|QL 查询

作者&#xff1a;Laura Trotta ES|QL 是 Elasticsearch 引入的一种新的查询语言&#xff0c;它将简化的语法与管道操作符结合起来&#xff0c;使用户能够直观地推断和操作数据。官方 Java 客户端的新版本 8.13.0 引入了对 ES|QL 查询的支持&#xff0c;提供了一个新的 API&…

云商城系统,无后门,一站式系统Java源码

云商城系统&#xff0c;无后门&#xff0c;一站式系统Java源码&#xff0c;心权益商品数量不限数量 系统对接 手动发货 自动发货 兑 换 码 订单监控 商品监控 对象存储 邮箱提醒 加价模板 密价功能 三方支付 会员体系 财务明细 交易分析 售后服务 技术支持 建议配置&#xf…

教程:使用JavaScript求绝对值

步骤1&#xff1a;了解绝对值的概念 绝对值指的是一个数不考虑符号的大小&#xff0c;例如&#xff0c;-5和5的绝对值都是5。 步骤2&#xff1a;准备JavaScript环境 你可以在浏览器的控制台中测试JavaScript代码&#xff0c;也可以在任何文本编辑器中编写代码&#xff0c;并…

(代码结构3)项目redis key 管理

场景:项目中到处可见的key&#xff0c;没有统一管理&#xff0c;极其难维护。大佬同事实现了一个。 代码 如图,Redis.php 是对redis的二次封装&#xff0c;对redis key模块的强制校验&#xff0c;FillerKeyTrait.php 是对filler模块的key获取。主要原理是:对redis二次封装&…

Jenkins集成Kubernetes 部署springboot项目

文章目录 准备部署的yml文件Harbor私服配置测试使用效果Jenkins远程调用参考文章 准备部署的yml文件 apiVersion: apps/v1 kind: Deployment metadata:namespace: testname: pipelinelabels:app: pipeline spec:replicas: 2selector:matchLabels:app: pipelinetemplate:metada…

Q1季度家用雾化器行业线上市场销售数据分析

随着人们健康意识的提高&#xff0c;越来越多的家庭开始关注全家人呼吸系统的健康&#xff0c;尤其是中老年人和儿童群体。因此&#xff0c;家用雾化器作为一种方便、有效的家庭保健设备&#xff0c;其市场需求也在不断增长。 根据鲸参谋数据显示&#xff0c;今年Q1季度雾化器…

模版进阶篇章

非类型模版参数 回顾&#xff1a;函数模版 &#xff1a;不用传类型&#xff0c;编译器会自动推导&#xff0c;和普通的函数调用一样 #include<iostream> using namespace std; template<typename T>// T是类型 bool Less(T a, T b)// a,b是T实例化的的对象 {retu…