在Linux上使用nginx反向代理部署Docker网站

在政务云上部署Web环境,为了保证服务器安全,甲方只开放一个端口且只允许使用https协议进行访问,经过思考,决定使用docker部署网站,使用nginx反向代理,通过不同的二级域名访问不同的端口。

1 使用docker部署网站

参见:https://blog.csdn.net/mingjing941018/article/details/136801590

2 使用docker安装nginx

//安装命令
docker pull nginx
//查看安装的镜像,安装完成后,会生成一个nginx镜像
docker images

3 为了方便更改配置,将nginx的配置文件和证书文件挂载到服务器本地

1.创建本地挂载目录;
//配置文件挂载目录
mkdir /opt/docker/nginx/conf.d -p
//证书文件存放目录
mkdir /opt/docker/nginx/cert -p
2.先运行nginx容器,查看配置文件目录;
//启动nginx
docker run --name nginx -p 80:80 -d nginx

//进入docker的nginx容器
docker exec -it nginx bash

//查找nginx配置文件default.conf 
//这个在/etc/nginx/conf.d/default.conf
find / -name "default.conf"

//查找nginx配置文件nginx.conf 
//这个在/etc/nginx/nginx.conf
find / -name "nginx.conf"

//退出容器
exit
3.将容器的配置文件复制到我们的挂载目录中;
//把docker内的default.conf复制到外部
docker cp nginx:/etc/nginx/conf.d/default.conf /opt/docker/nginx/conf.d/default.conf

//把docker内的nginx.conf复制到外部
docker cp nginx:/etc/nginx/nginx.conf /opt/docker/nginx/conf.d/nginx.conf
4.删除之前的容器
//停止容器
docker stop nginx

//删除容器
docker rm -f nginx
5.编辑挂载目录下的nginx.conf文件,否则执行下一步,查看日志信息会报异常:nginx: [emerg] open() “/etc/nginx/mime.types” failed (2: No such file or directory) in /etc/nginx/nginx.conf

删除红框内容:
在这里插入图片描述

6.使用挂载命令运行容器
//-v表示挂载的文件,-v [该文件在容器外部的位置]:[该文件在容器内部的位置]
docker run --name nginx -p 80:80 -p 443:443 -v /opt/docker/nginx/conf.d/nginx.conf:/etc/nginx/nginx.conf -v /opt/docker/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /opt/docker/nginx/cert:/etc/nginx -d nginx
//查看容器是否正常运行
docker ps
//查看日志信息
docker logs nginx
7.修改配置文件default.conf
//若有多个网站,可使用多个server
server {
    listen 80; #侦听80端口
    listen 443 ssl; #侦听443端口,用于SSL
    server_name tandk.com www.tandk.com;  # 自己的域名
    # 注意证书文件名字和位置,是从/etc/nginx/下开始算起的
    ssl_certificate 1_tandk.com_bundle.crt;
    ssl_certificate_key 2_tandk.com.key;
    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;

    client_max_body_size 1024m;

    location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	    # 这里写的是我的腾讯云内网地址,不知道为啥,不能用127.0.0.1...
        proxy_pass http://xx.xx.xx.xx:8090;
    }
}
8.配置完成,重启容器
//停止nginx
docker stop nginx

//启动容器
docker start nginx

//查看是否启动成功
docker ps

4 关于证书

免费证书:可免费使用一年,一个二级域名需使用一个证书
付费证书:设置一个主域名证书,所有二级域名都可以使用这个证书

5 关于数据盘挂载

由于系统盘空间有限,服务器一般需要挂载数据盘,但是有些情况下,数据盘挂载之后,服务器一旦重启会造成挂载丢失,这个要注意检查:

//查看磁盘信息
df -h
//进入系统根目录
cd /
//创建data文件夹用于挂载数据
mkdir data
//对数据盘进行分区,/dev/vdb为未挂载的数据盘
fdisk /dev/vdb
//执行上边的命令之后,会有分区引导,逐步执行下边的命令
n p 1 w
//查看未挂载的数据盘
fdisk -l
//格式化挂载的数据盘,/dev/vdbl为刚刚格式化的数据盘
mkfs.ext4 /dev/vdbl
//数据盘挂载
mount /dev/vdb1 /data
//修改配置,保证服务器重启时挂载数据盘
vi /etc/fstab
//将下面的内容添加到配置文件的最后一行
/dev/vdb1 /data ext4 defaults 0 0

在这里插入图片描述

6 关于Docker默认路径

数据盘挂载之后,需要将Docker默认镜像和容器存储位置设置到挂载的数据盘上

1.查看docker默认目录

docker info

在这里插入图片描述
默认路径为系统根目录:/var/lib/docker

2.停止docker服务

systemctl stop docker

3.创建docker默认目录

mkdir /data/docker -p

4.根据需要迁移原docker默认目录下的文件

mv /var/lib/docker/* /data/docker

5.配置docker默认目录

//一般情况下,这个文件不存在,直接新建
vi /etc/docker/daemon.json

//内容如下
{
  "data-root": "/data/docker"
}

6.编辑docker配置文件

//打开并配置docker文件
vi /etc/systemd/system/multi-user.target.wants/docker.service

//找到ExecStart部分并更新为以下内容
ExecStart=/usr/bin/dockerd --graph=/mnt/docker --storage-driver=overlay

7.重启docker服务

systemctl daemon-reload
systemctl restart docker
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FlYFlOWERANDLEAF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值