在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.mzph.cn/news/777313.shtml

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

相关文章

[Linux]条件变量:实现线程同步(什么是条件变量、为什么需要条件变量,怎么使用条件变量(接口)、例子,代码演示(生产者消费者模型))

目录 一、条件变量 1.什么是条件变量 故事说明 2、为什么需要使用条件变量 竞态条件 3.什么是同步 饥饿问题 二、条件变量的接口 1.pthread_cond_t 2.初始化(pthread_cond_init) 3.销毁(pthread_cond_destroy) 4.等待…

虚幻引擎资源加密方案解析

前段时间,全球游戏开发者大会(Game Developers Conference,简称GDC)在旧金山圆满落幕,会议提供了多份值得参考的数据报告。根据 GDC 调研数据,当下游戏市场中,Unreal Engine (下文简称虚幻)和 Unity 是使用最多的游戏引…

nginx代理解决跨域问题

文章目录 一、什么是跨域、跨域问题产生的原因二、注意事项三、nginx代理解决总结 一、什么是跨域、跨域问题产生的原因 跨域(Cross-Origin)是指在 Web 开发中,一个网页的运行脚本试图访问另一个网页的资源时,这两个网页的域名、…

蓝桥杯省三保底代码——数显+按键功能实现

目录 前言 一、为什么能保底省三 二、数显模块的实现 1.数码管显示​编辑 1)断码表 2)位选 3)段选 4)扫描 2.菜单 三、按键功能的实现 1.按键扫描 2.菜单切换 四、完整代码演示 五、结语 前言 上一期介绍全家桶时&…

【书生·浦语大模型实战营第二期】学习笔记1

1. Introduction 开源llm举例:LLaMA 、Qwen 、Mistral 和Deepseek 大型语言模型的发展包括预训练、监督微调(SFT)和基于人类反馈的强化学习(RLHF)等主要阶段 InternLM2的显著特点 采用分组查询注意力(GQA…

IP组播基础

原理概述 IANA ( Internet Assigned Numbers Authority )将 IP 地址分成了 A 、 B 、 C 、 D 、 E5类,其中的 D 类为组播 IP 地址,范围是224.0.0.0~239.255.255.255。 一个 IP 报文,其目的地址如果是单播 IP 地址&#xff…

螺旋矩阵的算法刷题

螺旋矩阵的算法刷题 本文主要涉及螺旋矩阵的算法 包括三个题目分别是 59. 螺旋矩阵 II54. 螺旋矩阵 中等LCR 146. 螺旋遍历二维数组 文章目录 螺旋矩阵的算法刷题一 、螺旋矩阵简单1.1 实现一(我认为这个方法更巧妙!!)1.2 实现二&…

短视频矩阵系统--技术3年源头迭代

短视频矩阵系统核心技术算法主要包括以下几个方面: 1. 视频剪辑:通过剪辑工具或API从各大短视频平台抓取符合要求的视频。这些视频通常符合某些特定条件,如特定关键词、特定时间段发布的视频、视频点赞评论转发等数据表现良好的视频。 2. 视…

2024年【熔化焊接与热切割】报名考试及熔化焊接与热切割模拟试题

题库来源:安全生产模拟考试一点通公众号小程序 熔化焊接与热切割报名考试考前必练!安全生产模拟考试一点通每个月更新熔化焊接与热切割模拟试题题目及答案!多做几遍,其实通过熔化焊接与热切割作业考试题库很简单。 1、【单选题】…

基于随机森林与LSTM神经网络的住宅用电比较分析及预测 代码+论文 完整毕设

摘要 本文旨在探讨基于随机森林(Random Forest)与长短期记忆神经网络(Long Short-Term Memory, LSTM)的住宅用电比较分析及预测方法。随机森林是一种集成学习方法,通过构建多个决策树进行预测,具有较强的鲁…

[疑难杂症2024-002]一个“显而易见“的问题,是如何进入生产环境的?

本文由Markdown语法编辑器编辑完成。 1. 前言 最近在处理一个在医院上线的系统的问题。这个问题,由于关联的模块比较多,至少涉及到3个模块之间的功能调用。因此,协调大家都有时间来排查问题不是很方便。这个问题就拖了有一周左右。医院那边…

钡铼技术R40路由器助力智能船舶航行数据实时传输与分析

钡铼技术R40路由器在智能船舶领域的应用,对于航行数据的实时传输与分析具有重要意义。随着航运业的不断发展和智能化水平的提升,船舶航行数据的及时传输和有效分析对船舶的安全、运营效率等方面至关重要。而引入钡铼技术R40路由器,则可以实现…

libVLC 捕获鼠标、键盘事件

在实现播放器的时候,我们需要捕获键盘、鼠标事件进行视频快进、快退,或者双击全屏/退出全屏窗口、鼠标右键弹出菜单栏。默认情况下,在使用libVLC库的时候,我们无法捕获这些事件,因为我们将Qt的视频窗口传递给了libVLC。…

工厂数据分析系统用这个开源库准没错

ScottPlot是一款简单易用、高度定制、性能卓越的.NET绘图库,支持跨平台操作。除提供标准图表类型外,还支持交互式操作,呈现生动的数据展示。在工厂数字化系统中,可用于生产数据可视化、设备监测和质量控制。无论用于科学研究、数据…

Springboot基础之——自定义starter

引言 在实际开发中,经常会定义一些公共的组件,提供给各个项目团队使用。而在SpringBoot项目中,一般会将这些公共组件封装成SpringBoot的starter。 如果想要自定义starter的话,就要先了解自动配置原理。 1 自动配置原理 1.1 什…

地物波谱库共享网站汇总

ENVI自5.2版本重新梳理了原有的标准波谱库,新增一些物质波谱,在ENVI5.6中存放在…\Harris\ENVI56\ resource\speclib,分别存放在四个文件夹中,储存为ENVI波谱库格式,有两个文件组成:.sli和.hdr。 ENVI保留…

代码随想录——搜索插入位置(Leetcode35)

题目链接 class Solution {public int searchInsert(int[] nums, int target) {int len nums.length;int left 0;int right len - 1;int index -1;while(left < len / 2){if(nums[left] target || target < nums[left]){index left;break;}else{left;}if(nums[ri…

通过Caliper进行压力测试程序,且汇总压力测试问题解决

环境要求 第一步. 配置基本环境 部署Caliper的计算机需要有外网权限;操作系统版本需要满足以下要求:Ubuntu >= 16.04、CentOS >= 7或MacOS >= 10.14;部署Caliper的计算机需要安装有以下软件:python 2.7、make、g++(gcc-c++)、gcc及git。第二步. 安装NodeJS # …

高效 CUDA 调试:将 NVIDIA Compute Sanitizer 与 NVIDIA 工具扩展结合使用并创建自定义工具

高效 CUDA 调试&#xff1a;将 NVIDIA Compute Sanitizer 与 NVIDIA 工具扩展结合使用并创建自定义工具 NVIDIA Compute Sanitizer 是一款功能强大的工具&#xff0c;可以节省您的时间和精力&#xff0c;同时提高 CUDA 应用程序的可靠性和性能。 在 CUDA 环境中调试代码既具有挑…