使用Docker安装Nginx

一、Nginx介绍

        Nginx 是一款高性能的开源 Web 服务器和反向代理服务器,具有高效能、高稳定性、低资源消耗等优点。可以处理大量并发请求,支持多种协议,还能实现负载均衡、缓存等功能,在互联网应用中被广泛使用。在Nginx中,网关、代理和反向代理是三种常见的功能,用于转发和处理请求。下面是它们的简要介绍。

网关(Gateway)

        就像一个大门,控制着不同网络之间的通信。比如,Nginx 可以作为一个网关,将来自不同协议的请求(如 HTTP、FTP 等)转发到相应的服务器。网关在网络通信中起到中介的作用,将客户端请求转发到其他服务器或应用程序。Nginx可以作为网关来处理不同类型的请求,并将其转发到适当的后端服务器。例如,Nginx可以充当HTTP请求的网关,将请求转发给HTTP服务器或应用程序。

代理(Proxy)

        代理是指Nginx将客户端的请求转发给其他服务器,同时返回响应给客户端。Nginx可以作为正向代理,代表客户端向其他服务器发起请求。当客户端发送请求到Nginx时,Nginx将请求转发给目标服务器,接收响应后再将其返回给客户端。这样客户端与目标服务器之间的通信对于目标服务器来说是透明的,客户端只与Nginx进行通信。比如,你在公司通过 Nginx 作为正向代理访问外网,你的请求先发送到 Nginx,然后由 Nginx 代表你去访问外网,外网看到的是 Nginx 的地址,而不是你的真实地址。

反向代理(Reverse Proxy)

        反向代理是指Nginx接收客户端的请求,并将请求转发给多个后端服务器中的一个。客户端不知道真正提供服务的是哪个服务器,因为它只与Nginx进行通信。Nginx根据特定的负载均衡算法(如轮询、IP哈希、权重等)选择一个后端服务器,并将请求转发到该服务器上。反向代理常用于负载均衡、缓存、SSL终止等场景。
        假设你要访问一个大型网站,Nginx 作为反向代理将你的请求分发给多个后端服务器。你只知道访问的是网站的域名,但实际上是 Nginx 把请求转发到了具体的服务器上。这可以实现负载均衡,提高网站的性能和稳定性。

        无论是代理还是反向代理,Nginx提供了强大而灵活的功能来转发请求并管理服务器集群,以实现更高的性能和可靠性。通过适当的配置,可以根据需求将请求转发到不同的后端服务器,并应用额外的功能,如请求修改、缓存、安全策略等。

正向代理:

反向代理:

二、使用Docker安装Nginx

关于Docker在Windows和Linux上的安装和Docker的常用命令,可以参考:
Docker在Windows与CentOS上的安装-CSDN博客

Docker常用命令-CSDN博客

1、下载nginx镜像

docker pull nginx:latest

等待镜像下载......

下载完成后,查看镜像。

2、创建挂载目录

mkdir -p /data/nginx/{conf,conf.d,html,logs}

对 docker 里 Nginx 对应的目录进行映射,就不需要进入到容器里面修改文件了。

3、启动容器,复制配置文件

为了保证配置文件的正确性,我们先进入容器里面,将配置文件内容复制出来。

启动容器:

docker run -itd nginx /bin/bash

启动完成后,查看容器运行状态:

进入容器内部(attach后面为容器id):

docker attach 877ce80aa105

复制文件内容过程中,可以打开两个窗口,其中一个窗口进入容器内部,复制起来会更加方便。

需要复制以下两个文件到容器外面:

1、在容器外面创建文件 default.conf

touch /data/nginx/conf.d/default.conf

将容器内部 /etc/nginx/conf.d/default.conf 内容复制到容器外的 /data/nginx/conf.d/default.conf

2、在容器外面创建文件 nginx.conf

touch /data/nginx/conf/nginx.conf

 将容器内部 /etc/nginx/nginx.conf 内容复制到容器外的 /data/nginx/conf/nginx.conf

两个文件复制完成后就可以删除掉这个容器了(命令后面是容器id)

docker stop 877ce80aa105
docker rm 877ce80aa105

4、重新启动容器

docker run  --name my_nginx -d \
-p 8089:80 \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/conf.d:/etc/nginx/conf.d  \
-v /data/nginx/logs:/var/log/nginx \
nginx

命令解释如下:

docker run:运行一个 Docker 容器。

--name my_nginx:为容器指定名称为my_nginx。

-d:以守护进程模式运行容器(在后台运行)。

-p 8089:80:将宿主机的8089端口映射到容器的80端口。

-v /data/nginx/html:/usr/share/nginx/html:将宿主机的/data/nginx/html目录挂载到容器的/usr/share/nginx/html目录,实现数据共享。

-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将宿主机的/data/nginx/conf/nginx.conf文件挂载到容器的/etc/nginx/nginx.conf文件,实现配置文件的挂载。

-v /data/nginx/conf.d:/etc/nginx/conf.d:将宿主机的/data/nginx/conf.d目录挂载到容器的/etc/nginx/conf.d目录。

-v /data/nginx/logs:/var/log/nginx:将宿主机的/data/nginx/logs目录挂载到容器的/var/log/nginx目录。

nginx:指定要运行的 Docker 镜像为nginx。

执行后如图:

查看容器启动状态:

创建一个 index.html 文件

touch /data/nginx/html/index.html

在 index.html 文件中写入以下代码:

<html>
<head>
<title>my_nginx</title>
</head>
<body>
<h1>
This is my nginx!
</h1>
</body>
</html>

此时,打开浏览器,访问 http://ip地址:8089

三、更新Nginx配置文件

我们此时就可以在容器外面根据自己需要修改Nginx的配置文件,修改配置文件完成后执行以下命令:

# 进入Nginx容器
docker exec -it my_nginx /bin/bash

进入容器后检查配置文件是否正确

nginx -t

检查结果如图:

检查结果显示 successful 就可以执行下面命令更新了

# 不重启Nginx重新加载配置文件
nginx -s reload

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ros 学习记录(二)URDF小车运动控制

URDF小车运动控制 准备工作创建 robot_xacro.launch 接上文&#xff0c;想用键盘控制小车在Gazebo中移动。 准备工作 名称版本ROSNoeticGazebo11.11.0 创建 robot_xacro.launch 通过运行这个launch文件&#xff0c;可以启动Gazebo仿真环境&#xff0c;并在仿真环境中加载和…

Redis实现延迟队列(为订单超时关闭提供更多的解决方案)

电商场景中的问题向来很受面试官的青睐&#xff0c;因为业务场景大家都相对更熟悉&#xff0c;相关的问题也很有深度&#xff0c;也有代表性&#xff0c;能更方便地考察候选人的技术水平。 比如商品购买下单支付的流程&#xff0c;在买家购买商品后会先生成订单&#xff0c;之后…

Vue开发中Element UI/Plus使用指南:常见问题(如Missing required prop: “value“)及中文全局组件配置解决方案

文章目录 一、vue中使用el-table的typeindex有时不显示序号Table 表格显示索引自定义索引报错信息解决方案 二、vue中Missing required prop: “value” 报错报错原因解决方案 三、el-table的索引值index在翻页的时候可以连续显示方法一方法二 四、vue3中Element Plus全局组件配…

微信小程序流量主如何自定义广告组件后台控制广告显示方式附源码[收藏]

最近开发了一个微信小程序&#xff0c;开通了流量主&#xff0c;引用广告显示。本教程干货满满&#xff0c;附上代码&#xff0c;建议**【收藏点赞】** 微信小程序广告有以下几种&#xff1a;Banner广告、激励广告、插屏广告、视频广告、视频贴片广告、封面广告。 为了增加广告…

数字工厂管理系统如何助力企业数据采集与分析

随着科技的不断进步&#xff0c;数字化已成为企业发展的重要趋势。在制造业领域&#xff0c;数字工厂管理系统的应用日益广泛&#xff0c;它不仅提升了生产效率&#xff0c;更在数据采集与分析方面发挥着举足轻重的作用。本文旨在探讨数字工厂管理系统如何助力企业数据采集与分…

Java数组(如果想知道Java中有关数组的知识点,那么只看这一篇就足够了!)

前言&#xff1a;数组对于每一门编程语言来说都是重要的数据结构之一&#xff0c;当然不同语言对数组的实现及处理也不尽相同,Java 语言中提供的数组是用来存储固定大小的同类型元素。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSD…

Kafka从0到消费者开发

安装ZK Index of /zookeeper/zookeeper-3.9.2 下载安装包 一定要下载-bin的&#xff0c;不带bin的是源码&#xff0c;没有编译的&#xff0c;无法执行。-bin的才可以执行。 解压 tar -zxvf apache-zookeeper-3.9.2-bin.tar.gz 备份配置 cp zoo_sample.cfg zoo_sample.cfg-b…

Chronos:学习时间序列的大语言模型(论文解读)

前言 《Chronos: Learning the Language of Time Series》原文地址GitHub项目地址Some-Paper-CN。本项目是译者在学习长时间序列预测、CV、NLP和机器学习过程中精读的一些论文&#xff0c;并对其进行了中文翻译。还有部分最佳示例教程。如果有帮助到大家&#xff0c;请帮忙点亮…

RAG技术简介

相关文档&#xff1a; 论文链接&#xff1a; https://arxiv.org/abs/2005.11401 课程链接&#xff1a; Tutorial/huixiangdou at camp2 InternLM/Tutorial GitHub 视频链接&#xff1a; 茴香豆&#xff1a;搭建你的 RAG 智能助理_哔哩哔哩_bilibili RAG是一种在LLM中广泛使…

echarts指标盘属性概括

echarts指标盘属性概括 代码 有模拟数据可以直接使用const options {animation: true,title: {top: "35%",left: "center",// text: "单元测试覆盖度", // 主标题itemGap: 15,textStyle: {// 主标题样式color: "#666666",fontSize:…

Spring MVC分页示例

Spring MVC分页示例 分页用于在不同部分显示大量记录。在这种情况下&#xff0c;我们将在一页中显示10、20或50条记录。对于其余记录&#xff0c;我们提供链接。 我们可以在Spring MVC中简单地创建分页示例。在此分页示例中&#xff0c;我们使用MySQL数据库来获取记录。 创建…

MySQL索引优化(超详细)篇章2--索引调优

目录 1.索引失效状况2.性能分析3.表的索引信息--调整索引顺序4.删除冗余索引5.最佳左前缀法则5.1下面是一个实际的例子来说明这个概念&#xff1a; 6.数据长度和索引长度占用空间比较 1.索引失效状况 MySQL索引失效通常指的是查询语句无法有效地利用索引&#xff0c;而导致全表…

为什么说HTTPS比HTTP安全? HTTPS是如何保证安全的?

一、安全特性 在上篇文章中&#xff0c;我们了解到HTTP在通信过程中&#xff0c;存在以下问题&#xff1a; 通信使用明文&#xff08;不加密&#xff09;&#xff0c;内容可能被窃听不验证通信方的身份&#xff0c;因此有可能遭遇伪装而HTTPS的出现正是解决这些问题&#xff0c…

基于springboot + vue 实现的简易博客系统

项目效果图 登陆页面 文章列表 发表文章 用户管理 栏目管理 数据统计 后端技术栈后端主要采用了&#xff1a; 1.SpringBoot 2.SpringSecurity 3.MyBatis 4.部分接口遵循Restful风格 5.MySQL 前端技术栈前端主要采用了&#xff1a; 1.Vue 2.axios 3.Elemen…

ETL如何执行Java脚本

ETLCloud提供了执行 Java 脚本的方式&#xff0c;让用户能够灵活地处理数据并实现各种复杂的数据处理任务。 ETLCloud在数据处理领域的应用优势主要体现在以下几个方面&#xff1a; 灵活性&#xff1a;通过执行Java脚本&#xff0c;用户能够灵活定制数据处理逻辑&#xff0c;满…

C语言---使用共用体将double型经纬度存储到无符号数组中

1.在上报经纬度时由于数据协议限制需要将double型数据存储到无符号数组中&#xff0c;下边是写了一个简单C程序进行验证&#xff1b; 2.代码示例如下 #include <stdio.h> typedef union {float data;unsigned char arr[4]; } my_data;int main() {my_data test_data {…

IDEA HTTP Client 插件配置空密码的 Request

最近在测试一些 rest api 的时候&#xff0c;发现 IDEA 的 HTTP Client 很好用。对比 postman 更加的轻量&#xff0c;可以满足一些简单的 HTTP 请求测试。这里主要记录下&#xff0c;当用户名没有设置密码时&#xff0c;我们该如何配置这个 HTTP Client 的 Request 文件&#…

综合内容运营实习生实习体验报告怎么写?

分享一个笔灵ai生成的综合内容运营的实习体验报告&#xff0c;有别的岗位需要的可以自己去网站使用 实习体验报告AI写作助手 | AI文章智能生成器 - 笔灵AI写作 实习体验报告 尊敬的领导&#xff1a; 您好&#xff01;我很荣幸有机会向您提交我的实习体验报告。在过去的几个月…

wpf中的图标字体和android的矢量图vector

1.背景 在安卓程序中如下截图所示中&#xff0c;在drawable文件夹下有如下图片文件。 这是一个xml文件&#xff0c;打开后看到Vector节点下paht中有一个pathData属性有一串带字母数字和"."点的数据。这些是什么呢&#xff1f; <vector xmlns:android"http:…

14个项目带你熟练学握AI2G免费分享|一门让你掌握人工智能能力的实操课(送工具)利用Midjourney

目录 1-一门让你掌握人工智能能力的实操课&#xff08;送工具&#xff09;.mp4 10-成为UI设计师&#xff1a;利用Midjourney进行页面UI设计.mp4 11-做室内设计师&#xff1a;利用Midjourney产出家居、室内设计方案.mp4 12-故事绘本&#xff1a;利用Midjouney准备课件、故事…