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

news2024/11/15 18:03:53

在政务云上部署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

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

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

相关文章

每日一题系列 —— 说一下JS的数据类型。/ JavaScript的数据类型有哪些?

面试官:说一下JS的数据类型。/ JavaScript的数据类型有哪些? 答:JavaScript的数据类型分为两种:①基本数据类型;②引用数据类型 其中基本数据类型包括: (1)数值(Number…

ubuntu的常用操作

一、用户 1.1 创建新用户 1.1.1 添加、修改、删除 1.2 超级用户root 切换到root用户,有全部权限,可以直接使用任何命令。 我们在什么时候才会切换到root用户进行操作呢?当我们使用某些命令,不想前面一直加sudo的话,…

大型DMP系统

前言 大家好,我是jiantaoyab,这是我作为学习笔记总结应用篇第一篇,本章大量的参考了别的博主的文章。 我们今天就先从搭建一个大型的 DMP 系统开始,利用组成原理里面学到的存储器知识,来做选型判断,从而更…

jenkins权限分配

1.安装权限插件 Role-Based Strategy 2.创建用户 3.修改全局安全配置中的授权策略为Role-Based Strategy 4.进入Manage and Assign Roles创建Global roles和Item roles 4.进入Assign Roles给用户分配role

行存储与列存储:大数据存储方案的选择与优缺点分析

随着大数据时代的来临,数据的规模和复杂性呈指数级增长,传统的关系数据库已经不再适应这一巨大的存储量和计算要求。在大数据存储领域,行存储和列存储成为两种备受关注的存储方案。本文将探讨行存储和列存储的定义、优缺点,并结合…

2024泰迪杯数据挖掘挑战赛A题思路代码成品文章参考:生产线的故障自动识别与人员配置

问题 1 根据附件 1 中的数据,分析生产线中各装置故障的数据特征,构建故障报警模型,实现故障的自动即时报警。 问题分析 针对问题一,我们的目标是利用附件1中提供的数据,分析生产线各装置发生故障的数据特征&#xff…

Python拆分PDF、Python合并PDF

WPS能拆分合并&#xff0c;但却是要输入编辑密码&#xff0c;我没有。故写了个脚本来做拆分&#xff0c;顺便附上合并的代码。 代码如下&#xff08;extract.py) #!/usr/bin/env python """PDF拆分脚本(需要Python3.10)Usage::$ python extract.py <pdf-fil…

ntp时间同步

上次使用minio的时候&#xff0c;报错了与本地的时间差过大&#xff0c;我当时还很疑惑&#xff0c;与是我去minio的linux上看了时间&#xff0c;发现因为是用的挂载虚拟机的原因&#xff0c;我图方便每次都是直接挂起虚拟机&#xff0c;导致时间一直卡在哪一个时间段。所以使用…

2024年【安全员-C证】考试及安全员-C证模拟考试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 安全员-C证考试考前必练&#xff01;安全生产模拟考试一点通每个月更新安全员-C证模拟考试题题目及答案&#xff01;多做几遍&#xff0c;其实通过安全员-C证模拟考试题很简单。 1、【多选题】《上海市工伤保险实施办…

Redis高级面试题-2024

说说你对Redis的理解 Redis是一个基于Key-Value存储结构的开源内存数据库&#xff0c;也是一种NoSQL数据库。 它支持多种数据类型&#xff0c;包括String、Map、Set、ZSet和List&#xff0c;以满足不同应用场景的需求。 Redis以内存存储和优化的数据结构为基础&#xff0c;提…

Vue3+Element Plus+TS开发企业管理后台(一)

系列文章&#xff0c;讲述一个企业管理后台的前后端设计&#xff0c;持续集成常见的页面功能和服务端设计思路。 效果展示 支持多种布局、主题配色随意切换 侧边菜单背景设置 主题色调切换 移动端完美适配 菜单侧边收起&#xff0c;适合移动端小空间场景。 功能开发计划 #merm…

YonBuilder移动开发小技巧-管理你的iOS证书

很多小伙伴&#xff0c;在应用详情页的APP证书面板页&#xff0c;进行iOS证书上传的时候&#xff0c;平台提供了「选择已有证书」功能&#xff0c;点击按钮可以选择历史上传过的iOS证书。 因为iOS证书证书存在有效期&#xff0c;或者随着我们更多的应用开发&#xff0c;和使用更…

Java基础之算术运算符的高级用法

文章目录 算术运算符的高级用法一 .""操作的三种情况1.数字相加2.字符串相加3.字符相加 算术运算符的高级用法 一 .""操作的三种情况 1.数字相加 问题:变量c是什么类型的? double 问题:变量c是什么类型的? 隐式转换: 把一个取值范围小的数值,转成取值…

算法---动态规划

动态规划 1.前言2. 斐波那契数列模型示例 - 第N个泰波那契数2.1 算法原理&#xff08;重点&#xff09;2.2 代码 3. 路径问题4. 简单多状态 dp 问题总结解题思路 1.前言 哪些情况下会用到动态规划&#xff1a; 1.最优化问题&#xff1a;当需要求解最大值或最小值的问题时&…

LiteFlow逻辑流引擎集成验证

本文将介绍开源逻辑流组件LiteFlow的架构、设计思想和适用场景&#xff0c;如何基于springboot集成LiteFlow&#xff0c;并验证DSL多种逻辑流程&#xff0c;以及逻辑流设计器的开发思路。 一、逻辑流解决什么问题 在每个公司的系统中&#xff0c;总有一些拥有复杂业务逻辑的系…

regexp_substr()

1、基本语法 REGEXP_SUBSTR(String, pattern, position,occurrence, modifier) String&#xff1a;需要进行处理的字符串。 pattern&#xff1a;正则表达式。 position&#xff1a;起始位置&#xff08;从字符串的第几个开始&#xff0c;默认为1&#xff0c;注&#xff1a;…

C++多重继承与虚继承

多重继承的原理 多重继承(multiple inheritance)是指从多个直接基类中产生派生类的能力。 多重继承的派生类继承了所有父类的属性。 在面向对象的编程中&#xff0c;多重继承意味着一个类可以从多个父类继承属性和方法。 就像你有一杯混合果汁&#xff0c;它是由多种水果榨取…

任务2.1 一元二次方程(顺序结构版)

在这个任务中&#xff0c;我们编写了一个Java程序来解决一元二次方程。程序接受用户输入的系数a、b、c&#xff0c;并计算出方程的根。通过计算判别式delta的值&#xff0c;我们可以确定方程有两个不相等实根、两个相等实根还是没有实数根。这个程序遵循了IPO模式&#xff0c;即…

Linux split分割xls或csv文件

文件名&#xff1a;test.xls split -a 2 -d -l 100 test.xls test-a 2&#xff1a;后缀是2位 -d&#xff1a;后缀数字 -l 100 &#xff1a;每100行一个文件 test.xls&#xff1a;需要分割的文件名 test&#xff1a;分割后的文件前缀批量修改文件后缀 for i in test*; do mv $…

探索多种数据格式:JSON、YAML、XML、CSV等数据格式详解与比较

title: 探索多种数据格式&#xff1a;JSON、YAML、XML、CSV等数据格式详解与比较 date: 2024/3/28 17:34:03 updated: 2024/3/28 17:34:03 tags: 数据格式JSONYAMLXMLCSV数据交换格式比较 1. 数据格式介绍 数据格式是用于组织和存储数据的规范化结构&#xff0c;不同的数据格…