网络基础以及Nginx实现反向代理

      最后更新:2022-07-20 14:55:27 手机定位技术交流文章

      Contents

      • 1. MAC地址、IP地址、TCP、UDP
      • 2.从A主机到B主机通过网络发送数据包的步骤
      • 3. nginx实现反向代理
        • 3.1. nginx安装
        • 3.2. nginx实现反向代理
          • 3.2.1.服务器角色信息
          • 3.2.2.http后端Web服务器配置
          • 3.2.3. nginx反向代理服务器配置
          • 3.2.4.客户配置
      • 4. References

      1. MAC地址、IP地址、TCP、UDP

      • MAC地址:Media Access Control (MAC),是与网络卡挂钩的固定地址,它由12个16位数字组成,每两个一组,每个组由前缀分开(例如2C:54:91:88:C9:E3)。MAC地址是世界上唯一的地址,仅用于识别一个网络卡设备。在网络通信中,MAC地址非常重要,在网络通信中,数据链层的MAC地址位于特定网络设备.

      • IP地址:是用户指定的网络卡所分配的逻辑地址,不同于MAC地址,网络卡设备的制造商在离开工厂时被指定.用户将IP地址分配给网络卡.其工作在网络层,用于识别网络通信中的特定主机。目前的IP协议分为两类,IPv4协议和IPv6协议,鉴于前一种地址范围不能满足当今社会网络设备的爆炸性增长所带来的巨大的IP地址需求,因此,IPv6协议也被开发。IPv4协议由32位数据组成,这个形式由点对点的十进制构成,每8位位一组,每组之间用点号分隔(比如:192.168.122.221)。IPv6协议包含8组,包含4个16英寸编码。总共128个(例如:3001:0da8:75a3:00:00:8a2e:0370:7334),它提供了比IPv4协议提供更多的地址空间。

        TCP/IP协议头条结构在下图所示:
        在这里插入图片描述

      • TCP协议:Transmission Control Protocol (TCP),即传输控制协议,是一个在传输层中工作的网络协议,基于网络层,可以保证可靠的网络包传输.TCP协议是一个面向连接的协议,因此,在我们开始传输数据之前,需要通过三个握手来建立联系,那时开始了数据传输。当TCP协议传输数据时,确保接收器正确接收数据包,如果数据接收有问题,发送器可以启动数据检索.通过这个机制,在基于数据包的网络通信中,可以解决一些问题,如数据包丢失、数据包序列错误、重复数据包和数据包损坏等。当数据传输完成时,TCP连接将通过振动四次切断.当数据到达传输层时,如果使用TCP协议,然后这个层将被添加到封筒中。TCP协议的包头总数为4字节(32位)。具体如下图所示:
        在这里插入图片描述

      • UDP协议:User Datagram Protocol (UDP),即用户数据报协议,也是一个在传输层中工作的网络协议,UDP是一个非连接协议,即使它能检测损坏的数据包,但它不会试图解决这个问题,所以UDP通常被认为是不可靠的链接(Unreliable Data Protocol)。UDP协议头条(3字节,(总共32件)非常简单,所以传输速度与TCP协议不同,也更快,传输过程的数据可靠性要求低,容忍数据丢失和数据传输过程中的混乱,在需要数据传输效率的场景中,适用于UDP协议数据传输.以下图示UDP协议的包头:
        在这里插入图片描述

      2.从A主机到B主机通过网络发送数据包的步骤

      当主机A上的用户应用程序通过网络向主机B发送数据的时候,应用程序根据所使用的应用层协议确定通信端口以及传输协议(TCP/UDP)以及通信的目标主机IP地址。具体如下图所示:
      在这里插入图片描述
      在这里插入图片描述
      如果用于传输数据的TCP协议,在发送数据之前必须用三个手建立一个TCP连接,然后在建立连接后将将传输的数据封装在TCP封筒末端。

      如果UDP协议用于传输数据,因为它是一个非连接的协议,则不需要连接,并且在UDP协议最后包装后,可以直接发送到接收机。

      然后,在传输层协议头上封装的数据包通过IP协议堆栈封装在IP头上以形成IP数据消息。

      下图显示了上述传输过程:
      在这里插入图片描述
      当IP数据报告到达数据链层和物理层时,将IP数据消息的打开连接到帧标题的末端,将它格式化为数据框架,在帧头中填入网络卡的MAC地址。随后, 数据包由主机A的网络卡发送到路由器, 交换器, 等等.最后到达网络卡的接收端。下图显示了帧头的数据结构:
      在这里插入图片描述

      3. nginx实现反向代理

      3.1. nginx安装

      "CentOS-7".Pass 6yum安装nginx的命令,需要在系统中添加 ayum镜像源。 具体,如下:

      默认情况下,nginx镜像源使用稳定版本。如果你想使用软件包的主线版本,你可以执行命令sudo yum-config-manager --enable nginx-mainline启用主线版本。

      配置好镜像源之后,yum makecahe创建本地缓存,然后就可以执行安装命令了。具体如下所示:

      当上面的命令执行时,它表示 nginx镜像源不能进行分析。 在转换到UUSTC镜像源后,问题得到解决,如下所示:

      下一个安装 thenginx软件包, 如下面所示:

      上述工程由 nginx-1.20 装置完成。

      安装nginx后,启动 thenginx服务并执行以下的访问测试:

      命令行访问了 thenginx Web 服务, 具体如下面所示:

      nginx服务已正确启动。

      3.2. nginx实现反向代理

      代理是为客户端配置的,其目的是为客户端实现隐私以及内容过滤;反向代理(reverse proxy)是为服务器配置的,目标是拦截客户到服务器的流量,向其代理机构的其他服务器调用流量,向客户端返回服务器的返回数据。

      如果多个服务器提供外部服务,那么通过反向代理,可以实现流量的负荷平衡,因此,在某种程度上提高绩效,除此之外,也可以缓存经常访问的内容和额外的安全层。然而,不利之处在于逆代理服务器直接面对客户端,因此,很容易形成一个单点失败。

      下表显示了Ninx逆剂的图表:
      在这里插入图片描述

      3.2.1.服务器角色信息

      为了实现nginx的反作用素,这个网站使用了一个名为 nginx反向代理的网站服务.要完成这个实验,这里使用了三个虚拟机,其中两个虚拟机作为后端网络服务器,另一个虚拟机是 nginx的反向代理服务器;另一个主机是客户端,进行反向代理测试。

      下面的表显示了虚拟机和主机的配置信息:

      Server Role Server Name OS Release IP Address Running Service Port Num
      Nginx反向代理服务器 c7u6s8 CentOS-7.6 x64 192.168.122.27 nginx-1.20 80
      后端Web服务器 c7u6s9 CentOS-7.6 x64 192.168.122.28 httpd-2.4.6 80
      后端Web服务器 c7u6s10 CentOS-7.6 x64 192.168.122.29 httpd-2.4.6 80
      客户端 u20u04m1 Ubuntu-20.04 x64 192.168.1.107 curl-7.68 /

      对于上述的服务器,只有客户端不需要配置,其余的三个服务器需要必要的配置。

      3.2.2.http后端Web服务器配置

      在这个实验中,两个服务器c7u6s9和c7u6s10被用作后端网络服务器,因此需要在这两个服务器上安装httpd软件包并启动相应的服务。

      通过yum安装httpd软件包的指令如下:

      安装软件包后,启动httpd服务,如下所示:

      服务现在启动,然后定义了主页的内容。 具体来说,如下:

      这将完成后端Web服务器的配置,c7u6s10也可以执行同样的操作步骤。

      3.2.3. nginx反向代理服务器配置

      在这个实验中,节点c7u6s8被用作反向代理服务器,因此它需要安装在 nginx-1.20软件包上,并修改配置文件以启动 nginx服务。

      前面的3.1节中已经安装了nginx软件包,并且启动了服务,接下来只需要准备好反向代理相关的配置文件即可。

      nginx的默认配置文件路径如下:

      上面的path.conf是默认的主配置文件;conf.d/directory是自定义配置文件的路径。 然后将附加的反向代理配置文件添加到conf.in这个目录。 配置文件的内容如下:

      修改上述配置文件后,执行测试,如果测试成功,重新装载配置文件。 具体,如下:

      因此, Xinx 的反向代理服务器被配置。

      3.2.4.客户配置

      当前无法使用客户端www.penguin.org这个主机名称用于网络访问,因为此时系统无法分析主机名称。或者为这个域名设置DNS服务,增加相应的记录;或使用更简单的方法,编辑配置文件**/etc/hosts**,在 nginx反向代理服务器的相应的IP地址之后,可以添加一个主机名称。具体如下所示:

      此时就可以使用www.penguin.org这个主机名通过访问逆代理服务器访问后端Web服务器的内容。 具体测试如下:

      从上面的测试中可以看出,客户端的访问请求分配到两个后端服务器。

      4. References

      [1]. Transmission Control Protocol (TCP)
      [2]. User Datagram Protocol (UDP)
      [3]. How the TCP/IP Protocols Handle Data Communications
      [4]. TCP/IP Packet Headers
      [5]. Ethernet Frame Format
      [6]. What is Address Resolution Protocol (ARP)?
      [7]. nginx: Linux packages

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/30136.html

          热门文章

          文章分类