Nginx是什么?

Nginx是一款高性能的开源Web服务器和反向署理服务器,同时也是一款可扩展的HTTP服务器,其特点是占用资源少,处理静态文件快,而且能够供给 HTTP 缓存服务、负载均衡等高档功用。其使用广泛,被广泛用于静态Web服务器或反向署理服务器的人物。

为什么要使用Nginx?

相较于传统的Web服务器,Nginx具有以下优势:

  • 处理静态文件效率高,能够处理大量并发衔接;
  • 能够进行反向署理和负载均衡,支撑HTTP、HTTPS、SMTP、POP3、IMAP等多种协议;
  • 支撑HTTP缓存和Gzip紧缩,进步Web使用呼应速度;
  • 能够进行HTTP恳求约束和拜访认证,进步Web使用安全性;
  • 支撑动态模块扩展,具有良好的可扩展性。

Nginx的根本结构

Nginx的根本结构由Master进程和多个Worker进程组成。Master进程首要负责装备文件的读取、转发信号给Worker进程和其他进程办理等工作;Worker进程则负责处理实践的网络恳求。Nginx的根本工作流程如下图所示:

根本原理

    根据上述概念和反向署理技能,Nginx 的根本原理能够概括如下:

    1. 客户端发送恳求至 Nginx。假如恳求的是静态资源,则直接回来恳求成果;假如恳求的是动态资源,则将恳求转发到后端 Web 使用服务器上进行处理。  
    2. Nginx 能够对恳求进行分流,根据不同的规矩将恳求分配到不同的 Web 使用服务器上进行处理。  
    3. 后端 Web 使用服务器接收到恳求后,进行相应的处理,然后将呼应成果回来给 Nginx。  
    4. Nginx 将 Web 使用服务器的呼应成果回来给客户端。

Nginx根本组成

Nginx 首要由以下几个组件组成:

  • Nginx 中心模块。Nginx 中心模块包含一系列的根底模块,例如 Event、Epoll、Select、I/O 多路复用等。这些模块首要用于处理客户端恳求、办理客户端衔接、完成负载均衡等根底功用。
  • HTTP 模块。HTTP 模块负责处理 HTTP 恳求和呼应,能够供给 HTTP 缓存、反向署理等高档功用。
  • Stream模块。Stream模块支撑TCP和UDP协议,能够完成分流、负载均衡等高档功用。
  • 邮件模块。邮件模块可用于 SMTP、POP3、IMAP 等邮件协议的署理和转发。
  • 第三方模块。Nginx 支撑扩展第三方模块,例如 Modsecurity、Http Redis 等,然后完成更多的高档功用。

Nginx装备文件

Nginx 的装备文件是由一系列指令组成的文本文件,首要用于装备 Nginx 的根本参数。最常用的指令包含 server、location、proxy_pass 等。其中,server 指令用于装备 Nginx 的根底参数,例如监听的端口、域名等;location 指令用于装备恳求的地址映射,例如将恳求转发到对应的 Web 使用服务器上;proxy_pass 指令用于装备反向署理服务地址。

Nginx 的装备文件一般位于 /etc/nginx/nginx.conf,其语法采用了类似于 C 语言的指令结构。

Nginx的常用装备项

Nginx的常用装备项包含:

  • worker_processes:指定Worker进程数;
  • error_log:指定Nginx的错误日志文件途径;
  • access_log:指定Nginx的拜访日志文件途径;
  • listen:指定Nginx监听的端口和IP;
  • server_name:指定Nginx的服务器域名;
  • location:指定Nginx的URL匹配规矩。

反向署理和正向署理

  • 什么是署理?

    署理是一种网络服务,充任客户端和长途服务器之间的中间人,将客户端恳求转发给长途服务器,并将长途服务器的呼应转发给客户端。

署理的效果

    署理的效果首要有以下几个方面:
     躲藏实在服务器的IP地址;  
     能够进行拜访控制和拜访约束;  
     增强Web使用的安全性;  
     进步Web使用的可用性和性能。  

正向署理和反向署理简介

  • 正向署理和反向署理是两种常见的署理方法:

    正向署理:署理服务器充任客户端的人物,向长途服务器发送恳求,并将呼应成果回来给客户端。这种署理方法一般使用于躲藏客户端的实在IP地址或许拜访墙外的Web资源。
    反向署理:署理服务器充任长途服务器的人物,向客户端供给服务,并将恳求转发给后端实在的服务器,将呼应成果回来给客户端。这种署理方法一般使用于进行负载均衡和进步Web使用的可用性和性能,Nginx 首要采用了反向署理技能。所谓反向署理是指,Nginx 作为 Web 使用服务器前面的负载均衡器,客户端的恳求进入 Nginx 后,Nginx 协助客户端向后端的 Web 使用服务器建议恳求,并将 Web 使用服务器的呼应成果回来给客户端。而客户端并不知道自己的恳求是经过 Nginx 宣布的。 这种反向署理的原理,实践上便是客户端恳求处理的责任从 Web 使用服务器转移到了 Nginx 上,Nginx 负责办理和协调 Web 使用服务器,然后完成负载均衡和资源优化的意图。

反向署理和正向署理的差异

反向署理和正向署理的差异首要在于署理服务器的人物不同:

  • 反向署理:署理服务器充任长途服务器的人物,向客户端供给服务。客户端无法直接拜访后端实在服务器,也不知道实在服务器的IP地址和端口号。
  • 正向署理:署理服务器充任客户端的人物,向长途服务器发送恳求,并将呼应成果回来给客户端。客户端无法直接拜访长途服务器,也不知道长途服务器的IP地址和端口号。

静态资源和动态资源

在讲解 Nginx 的根本原理时,还需求了解一下静态资源和动态资源的概念。

  • 静态资源,指的是文件内容不会发生改变的资源,例如 CSS、JS、图片、Html 页面等。

  • 动态资源,指的是文件内容会随着恳求发生变化的资源,例如 ASP、PHP、JSP 页面(这儿的动态资源指的是需求服务器端脚本解析的文件,不是 JavaScript 中的动态效果)。

结语

    以上便是Nginx根本原理和常识,以及反向署理和正向署理的介绍。期望对您有所协助。