Nginx基础篇(1)Nginx简介
  UYqGUrvNnnTe 2023年11月02日 96 0

Nginx是一款自由的、开源的、高性能的HTTP​​服务器​​​和 反向代理 服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行​​负载均衡​​的实现。

  • Nginx使用基于事件驱动架构,使得其可以支持数以百万级别的TCP连接
  • 高度的模块化和自由软件许可证使得第三方模块层出不穷(开源)
  • Nginx是一个跨平台服务器,可以运行在Linux,Windows,FreeBSD,Solaris,AIX,Mac OS等操作系统上
  • 稳定性极高


Nginx 解决高并发

  • Nginx高并发原理( 多进程+epoll实现高并发 )
  • Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程。
  • 每个子进程只有一个线程(协程),采用的 IO多路复用模型epoll,实现高并发。

epoll能实现高并发原理

  • epoll() 中内核则维护一个链表,epoll_wait 方法可以获取到链表长度,不为0就知道文件描述符准备好了。
  • 在内核实现中 epoll 是根据每个 sockfd 上面的与设备驱动程序建立起来的回调函数实现的。
  • 某个 sockfd 上的事件发生时,与它对应的回调函数就会被调用,来把这个 sockfd 加入链表,其他处于“空闲的”状态的则不会。
  • epoll上面链表中获取文件描述,这里使用内存映射(mmap)技术, 避免了复制大量文件描述符带来的开销

内存映射(mmap):

  • 内存映射文件,是由一个文件到一块内存的映射,将不必再对文件执行I/O操作


nginx和apache比较

Nginx基础篇(1)Nginx简介_nginx

nginx相对于apache的优点

  • 轻量级,同样起web 服务,比apache 占用更少的内存及资源
  • 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
  • 高度模块化的设计,编写模块相对简单,社区活跃,各种高性能模块出品迅速啊

apache 相对于nginx 的优点

  • apache 更为成熟,少 bug ,稳定性好
  • rewrite ,比nginx 的rewrite 强大
  • 模块超多,基本想到的都可以找到


Nginx 代理

  • 说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道此时就涉及到两个角色,一个是被代理角色 (A_),一个是目标角色 (B_),A_ 通过这个代理访问 B_ 完成一些任务的过程称为代理 (C_) 操作过程;比如客人去买双鞋,这个店铺就是 (C_),(A_) 就是厂家,(B_) 就是用户。代理呢又分为正向代理和反向代理


正向代理

  • 首先我们先举个例子:比如说我们在 YouTob 上查找学习资料,大家会发现很慢;这个时候就会需要到正向代理,最明显的例子(1FQ),FQ的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们
  • 这就是正向代理,正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。
  • 总结来说:正向代理,“它代理的是客户端,代客户端发出请求”,是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。

正向代理的用途:

  • 访问原来无法访问的资源,如Google
  • 可以做缓存,加速访问资源
  • 对客户端访问授权,上网进行认证
  • 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息

正向代理配置:

  • 现在的网站基本上都是https,要解决既能访问http80端口也能访问https443端口的网站,需要配置两个SERVER节点,一个处理HTTP转发,另一个处理HTTPS转发,而客户端都通过HTTP来访问代理,通过访问代理不同的端口,来区分HTTP和HTTPS请求。


反向代理

举例:我国的某宝网站,每天同时连接到网站的访问人数已经爆表,单个服务器远远不能满足用户访问量了,此时就出现了分布式部署;也就是通过部署多台服务器来解决访问人数限制的问题;某宝网站中大部分功能也是直接使用Nginx进行反向代理实现的,并且通过封装Nginx和其他的组件之后起了个高大上的名字:Tengine,有兴趣的童鞋可以访问Tengine的官网查看具体的信息http://tengine.taobao.org/。

  • 多个客户端给服务器发送的请求,Nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。 此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,Nginx扮演的就是一个反向代理角色。
  • 客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。 因为客户端不需要任何配置就可以访问。
  • 反向代理,“它代理的是服务端,代服务端接收请求”,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。

反向代理的作用:

  • 保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
  • 负载均衡,通过反向代理服务器来优化网站的负载


详细原文:​​https://cloud.tencent.com/developer/article/1594836​

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
UYqGUrvNnnTe
最新推荐 更多