全文目录,一步到位
1.前言简介
1.1 专栏传送门
=> docker实用(安装/操作)专栏传送门 <=
=> linux普通方式安装nginx并支持ssl <=
1.1.1 本文简介
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_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 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进行配置
- nginx.conf文件位置
写容器路径
千万不要写宿主机路径
- 容器内也可以随意建立(
mkdir
)文件夹的 挂载目录对应上即可- html文件夹完全可以不用, 可以参考(2-上条)
总之灵活使用
挂载的目的也是文件内容相互同步
@author: pingzhuyan
@description: ok
@year: 2024