全文目录,一步到位
- 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进行配置
- nginx.conf文件位置
写容器路径
千万不要写宿主机路径
- 容器内也可以随意建立(
mkdir
)文件夹的 挂载目录对应上即可- html文件夹完全可以不用, 可以参考(2-上条)
总之灵活使用
挂载的目的也是文件内容相互同步
@author: pingzhuyan
@description: ok
@year: 2024