- 1 背景
- 2 环境说明
- 3 部署nginx
- 3.1 准备工作
- 3.2 开始部署
- 4 配置SSL证书
- 5 参考
随着公有云、私有云和混合云的普及,容器化技术越来越被大众使用,docker 相关应用和部署在工作中越来越多的被使用,本文以nginx的部署为例进行,如果只是单纯的安装nginx,可以参考《linux 系统下四种nginx安装方法》,本文是上篇的延续和拓展。
2 环境说明| 名称 | 版本 |
|---|---|
| 操作系统 | CentOS Linux release 7.9.2009 (Core) |
| docker | Docker version 20.10.14 |
| docker-compose | docker-compose version 1.25.1 |
| nginx | 1.21.6 |
创建文件夹
mkdir -p /data/nginx/conf.d /data/nginx/logs /data/nginx/letsencrypt /data/site
创建部署文件
vi /data/nginx/docker-compose.yml
输入如下信息
version: "3"
services:
nginx:
image: nginx:1.21.6
restart: always
container_name: nginx
environment:
- TZ=Asia/Shanghai
ports:
- "80:80"
- "443:443"
volumes:
- /data/nginx/conf.d:/etc/nginx/conf.d
- /data/nginx/logs:/var/log/nginx
- /data/site:/usr/share/nginx/html
- /data/nginx/letsencrypt:/etc/letsencrypt
- /data/nginx/nginx.conf:/etc/nginx/nginx.conf
| 项目 | 目录 | 说明 |
|---|---|---|
| 配置文件夹 | /data/nginx/conf.d | 目录下存放default.conf |
| 配置文件 | /data/nginx/nginx.conf | 主配置文件 |
| 日志文件夹 | /data/nginx/logs | errors.log和acess.log |
| 证书文件夹 | /data/nginx/letscrypt | 存放nginx的https证书 |
| 站点 | /data/site | 站点文件夹 |
| 部署文件 | /data/nginx/docker-compose.yml | 部署文件 |
**注意:**证书需要提前在域名购买网站进行申请。
目录创建完毕后,将文件放置对应的目录下
nginx.conf 和default.conf配置文件、证书文件、部署文件docker-compose.yml、站点文件
nginx配置文件获取方法:
nginx.conf和default.conf文件可以使用
1、拉取镜像
docker pull nginx:1.21.6
2、运行镜像
docker run -d -p 8080:80 nginx:1.21.6
3、查看容器id
docker ps
4、进入容器
docker exec -it f424fd6f2315 /bin/bash
注意:如果使用的是alpine版本的nginx 进入容器的命令为:docker exec -it 33e8474cdd09 /bin/sh
查找容器中的default.conf和nginx.conf文件的位置
- /etc/nginx/conf.d/default.conf
- /etc/nginx/nginx.conf
5、退出容器
exit
6、拷贝
docker cp f424fd6f2315:/etc/nginx/conf.d/defaut.conf /data/nginx/donf.d docker cp f424fd6f2315:/etc/nginx/nginx.conf /data/nginx
拷贝完毕
7、删除容器
docker stop f424fd6f2315 docker rm f424fd6f2315
目录结构
开具端口或者服务
centos7.9服务器默认是开具了ssh服务,nginx外部访问需要开具htttp和https或其对应的端口80和443端口
firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-port=443/tcp --permanent firewall-cmd --reload3.2 开始部署
启动部署
docker-compose up -d
测试
终端输入 curl IP
打开浏览器输入IP地址查看
细心的读者可能已经发现浏览器地址栏左侧的“不安全”字眼和图标,接下来配置SSL证书来让网站相对来说更安全点。
配置Nginx中“/data/nginx/conf.d/”目录下的“default.conf”文件。
新增如下内容
vi /data/nginx/conf.d/default.conf
server {
# SSL 访问端口
listen 443 ssl;
# 绑定证书域名
server_name jjyard.xyz;
# 证书文件
ssl_certificate /etc/letsencrypt/jjyard.xyz_bundle.crt;
# 私钥文件
ssl_certificate_key /etc/letsencrypt/jjyard.xyz.key;
ssl_session_timeout 5m;
# 配置协议
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
查看运行容器 id
docker ps
使用查看到的容器id进入容器
进入容器
docker exec -it 33e8474cdd09 /bin/bash
注意:如果使用的是alpine版本的nginx命令为:docker exec -it 33e8474cdd09 /bin/sh
验证nginx配置文件
nginx -t
重启容器
docker restart 33e8474cdd09
浏览器
输入:https://jjyard.xyz
浏览器中输入原
http://jjyard.xyz
目前是支持80和443端口的,可以将80端口强制跳转至443端口使用https协议访问
修改/data/nginx/conf.d/default.conf
添加如下信息
#填写绑定证书的域名 server_name server_name.xyz; #把http的域名请求转成https return 301 https://$host$request_uri;
重启容器
docker restart 33e8474cdd09
浏览器中输入http://jjyard.xyz
浏览器自动跳转https://jjyard.xyz
Nginx 服务器 SSL 证书安装部署



