在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端口,用于SSLserver_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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/289414.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue基础——java程序员版(总集)

前言: ​ 这是一个java程序员的vue学习记录。 ​ vue是前端的主流框架,按照如今的就业形式作为后端开发的java程序员也是要有所了解的,下面是本人的vue学习记录,包括vue2的基本使用以及引入element-ui,使用的开发工具…

三位数组合-第12届蓝桥杯选拔赛Python真题精选

[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第42讲。 三位数组合&#…

方格分割(蓝桥杯)

文章目录 方格分割题目描述答案:509思路dfs 方格分割 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 6x6的方格,沿着格子的边线剪开成两部分。 要求这两部分的形状完全相同。 如下就是三…

HTTP状态 405 - 方法不允许

方法有问题。 用Post发的请求&#xff0c;然后用Put接收的。 大家也可以看看是不是有这种问题 <body><h1>HTTP状态 405 - 方法不允许</h1><hr class"line" /><p><b>类型</b> 状态报告</p><p><b>消息…

Python程序设计 循环结构(二)

1.斐波那契数列 编写一个能计算斐波那契数列中第x个数的小程序。斐波那契数列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又称黄金分割数列、 因数学家莱昂纳多斐波那契&#xff08;Leonardoda Fibonacci&#xff09;以兔子繁殖为例子而引入&#xff0c;故又称为…

Redis入门到实战-第二十弹

Redis实战热身Time series篇 完整命令参考官网 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的&#xff08;采用BSD许可证&#xff09;&#xff0c;用作数据库、缓存、消息代…

MTransE阅读笔记

Multilingual Knowledge Graph Embeddings for Cross-lingual Knowledge Alignment 用于交叉知识对齐的多语言知识图谱嵌入(MTransE) Abstract 最近的许多工作已经证明了知识图谱嵌入在完成单语知识图谱方面的好处。由于相关的知识库是用几种不同的语言构建的&#xff0c;因…

蓝桥杯每日一题(floyd算法)

4074 铁路与公路 如果两个城市之间有铁路t11&#xff0c;公路就会t2>1,没铁路的时候t1>1,公路t21。也就是公路铁路永远都不会相等。我们只需要计算通过公路和铁路从1到n最大的那个即可。 floyd是直接在数组上更新距离。不需要新建dis数组。另外一定要记得把邻接矩阵初始…

编程语言|C语言——C语言变量的存储方式

前言 变量是程序中数据的存储空间的抽象。变量的存储方式可分为静态存储和动态存储两种。 静态存储变量通常是在程序编译时就分配一定的存储空间并一直保持不变&#xff0c;直至整个程序结束。在上一部分中介绍的全局变量的存储方式即属于此类存储方式。 动态存储变量是在程序执…

Wireshark 抓包工具与长ping工具pinginfoview使用,安装包

一、Wireshark使用 打开软件&#xff0c;选择以太网 1、时间设置时间显示格式 这个时间戳不易直观&#xff0c;我们修改 2、抓包使用的命令 1&#xff09;IP地址过滤 ip.addr192.168.1.114 //筛选出源IP或者目的IP地址是192.168.1.114的全部数据包。 ip.sr…

AcWing 2816. 判断子序列(双指针)

—>原题链接 思路: 1.首先定义两个指针 i 和 j 分别指向x和y的起始位置 2.开始循环遍历x和y数组,如果 x[i] y[j] 那么i,否则j,遍历到最后in那么就说明x是y的子序列 图解 上代码: #include <iostream> using namespace std;const int N 111111;int n,m,x[N],y[N]…

2024年黑龙江省安全员C证证模拟考试题库及黑龙江省安全员C证理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年黑龙江省安全员C证证模拟考试题库及黑龙江省安全员C证理论考试试题是由安全生产模拟考试一点通提供&#xff0c;黑龙江省安全员C证证模拟考试题库是根据黑龙江省安全员C证最新版教材&#xff0c;黑龙江省安全员…

Git命令及GUI基本操作

不习惯使用Git命令的可移步下面Git GUI基本操作 Git 常用命令 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch -r 查看本地所有分支 git commit -am "init" 提交并且加注释 git remote add orig…

实用攻略:选择最佳项目管理软件!适合远程团队使用!

2019年新冠疫情爆发&#xff0c;这场全球范围的大流行病不仅对经济构成威胁&#xff0c;还引发了大家对经济衰退的担忧。许多先进企业和组织立即转变思路通过远程办公的方式开展工作。本文为大家介绍适合远程团队的项目管理软件&#xff0c;项目管理软件选型指南。 现实中&…

尚宝罗邀您参观2024第13届生物发酵展

参展企业介绍 尚宝罗江苏节能科技股份有限公司坐落于扬州市的北大门素有“中国荷藕之乡”、“中国生态示范县”---宝应。这里环境优美&#xff0c;气候宜人&#xff0c;交通十分便利。 尚宝罗公司占地面积36000平方米,建筑面积15800平方米。公司拥有大型加工设备60台套,精密加…

MySQL数据库高阶语句②

目录 一.子查询与多表查询 1.子查询 2.update子查询 3.多表查询 4.delete子查询 5.exists关键字也用于子查询 6.结果集 二.MySQL视图 1.定义 2.作用场景 3.视图与表的区别与联系 &#xff08;1&#xff09;区别 ①视图是已经编译好的sql语句。而表不是 ②视图没有…

Pytorch入门实战 P4-猴痘图片,精确度提升

目录 一、前言&#xff1a; 二、前期准备&#xff1a; 1、设备查看 2、导入收集到的数据集 3、数据预处理 4、划分数据集&#xff08;8:2&#xff09; 5、加载数据集 三、搭建神经网络 四、训练模型 1、设置超参数 2、编写训练函数 3、编写测试函数 4、正式训练 …

【C++初阶】之类和对象(下)

【C初阶】之类和对象&#xff08;下&#xff09; ✍ 再谈构造函数&#x1f3c4; 初始化列表的引入&#x1f498; 初始化列表的语法&#x1f498; 初始化列表初始化元素的顺序 &#x1f3c4; explicit关键字 ✍ Static成员&#x1f3c4; C语言中的静态变量&#x1f3c4; C中的静…

Linux(3)软件安装-Centos 8.1安装-硬盘分区方案对比-linux上运行jar包-File上传下载

四、软件安装 1、Centos 8.1安装 1.1 安装过程 1、下载 CentOS 8.1 ISO 镜像文件 访问 CentOS 官方网站的下载页面。选择适当的版本&#xff0c;例如 CentOS Linux 8.1 (Linux Kernel 5.10.0-36)。根据您的硬件架构下载对应的 ISO 镜像文件&#xff08;如 CentOS-8.1-x86_6…

vue3全局引入element-plus使用Message教程

文章目录 安装引入 Element Plus和组件样式示例注意安装与引入&#xff1a;按需引入&#xff1a;API 使用&#xff1a;样式问题&#xff1a;组件上下文&#xff1a;版本兼容性&#xff1a;错误处理&#xff1a; 这是 Element UI 的 Vue 3 版本。ElMessage 是 Element Plus 中的…