0
点赞
收藏
分享

微信扫一扫

nginx代理服务

fbd4ffd0717b 2022-03-11 阅读 104

nginx是一个开源且高性能,可靠的HTTP中间件,代理服务。

开源:直接获取源代码

高性能:支持海量开发

常见的HTTP服务

  1. HTTPD --Apache基金会 三种工作模式:prefork worker event
  2. IIS--- 微软
  3. GWS - Google  Brog  kubernets
  4. openrestry  
  5. Tenging -- 淘宝基于nginx开发(开源的)
  6. Nginx

 

nginx应用场景

静态处理 (对静态页面的处理,不管是HTTP还是nginx默认只能处理静态页面)

反向代理 (不直接处理客户端请求,而是将请求转交给其他服务器)

负载均衡 (跟反向代理相结合,负责将客户端的请求转交给其它压力较小的服务器)

资源缓存 (对客户端经常访问的数据进行缓存,从而加快客户端的访问速度)

安全防护 (nginx对自己本身有一定防护措施)

访问限制 (有点类似于apache的order deny,allow)

访问认证 (对所访问网站,进行添加用户名和密码)

nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/AMTP服务。众所周知nginx的相比于apache有更高的并发,可以接收处理个更多的访问请求,这得益于IO模型,下面为大家介绍IO模型。

单apache:同时处理客户端的理想值是2W

单nginx:同时处理客户端的理想值是5W

I/O介绍

每次I/O都要经由两个阶段

第一步:将数据从磁盘文件先加载至内核空间(缓冲区),等待数据准备完成,时间较长

第二步:将数据从内核缓冲区复制到用户空间的进程内存中,时间较短

同步异步,阻塞和非阻塞

同步异步;关注的是消息通信机制

同步:synchronous,调节者等待被调节者返回消息,才能继续执行

异步:asynchronous,被调用者通过状态,通知或回调机制主动通知调用者被调用者的运行状态

阻塞非阻塞:关注调用者在等待结果返回之前所处的状态

阻塞:BLOCKING,指IO操作需要彻底完成之后才返回到用户空间,调用结果返回之前,调用者被挂起

非阻塞;nonblocking,指IO操作被调用后立即返回给用户一个状态值,无需等到IO操作彻底完成,最终的调用结果返回之前,调用者不会被挂起

I/O模型:

阻塞型,非阻塞型,复用型,信号驱动型,异步

  1. 同步

使用者等待被调用者返回消息,才能继续执行

  1. 异步
  2. 被调用者通知状态,通知或者调机制主动通知调用者的运行状态

同步异步的区别

同步:被调用者不会返回任务的状态,需要调用者不停的询问

异步:被调用者返回任务的状态,不需要调用者不停的询问

为什么nginx比apache高效?

nginx采用epoll模型,有内存映射机制,apachea用的是select模型,线性遍历inode号,效率低下

Epoll 是子进程工作完向主进程请求(nginx)

Select 是主进程一个一个的子进程问(apache)

Select/poll应该是同步阻塞,epoll是同步阻塞

Linux两种工作模式

Master-work模式的单线程模式在master-work模式下有一个master进程和至少一个worker进程

单进程模式顾名思义只有一个进程这两种模式各有应用场景

Selecrlpoll应该是同步堵塞,epoll是同步非堵塞的

Sendflie

传统的文件传输,在现实是比较复杂的

  1. read函数,文件数据复制到内核,缓冲
  2. Read函数返回,文件数据从内核缓冲区

复制到用户缓冲区

  1. write函数调用将文件数据从用户缓冲区复制到内核与socket相关的缓冲区
  2. 数据从cosket缓冲区复制相关协议引警

Lsattr 查看文件是否上锁

Chattr +i 文件名  给文件上锁

Chattr -i 文件名  去掉锁

Nginx虚拟主机

所谓虚拟主机,在web服务器里是一个独立的网站站点,这个站点对应独立的域名(也可能是 IP 或 端口),具有独立的程序及资源目录,可以独立地对外提供服务供用户访问

Nginx配置文件

Nginx配置文件 /etc/nginx/nginx.conf 是一个纯文类型的文件,整个配置文件是以区块形式组织的。一般每个区以对大括号{}

  1. main位于nginx.conf配置文件的最高层
  2. main层下可以有Event,http层
  3. HTTP层下有允许有多个server层用于对不同的网站做法不同配置
  4. Server层也允许有多个location

//nginx默认配置语法

User   //设置nginx服务的系统使用用户

Worker_processes  //工作进程配置和cpu个数保持一致

Error_log  //错误日志,后面接入是路径

Pid  //nginx服务启动时的pid

反向代理

 客户端->代理<-->服务端

  1. 客户端不知道代理的存在
  2. 代理一般是由服务端设置,加快客户端的访问速度的

 

Nginx 负载均衡

提升吞吐率,提升请求性能,提高容灾

在nginx中用到了反向代理,不一定会用负载均衡

在Nginx中用到了负载均衡,一定会用反向代理

真正实现反向代理的是负载均衡算法

负载均衡按范围划分:GSLB全面负载均衡。LSB

 

 

 

负载均衡按层级划分;分为四层(传输层)负载均衡和七层(应用层)负载均衡

nginx是一个典型的七层SLB

LVS:四层负载均衡

Haproxy:即支持四层又支持七层 

 

nginx负载均衡配置场景

nginx负载均衡模块upstream需要跟nginx反向代理模块proxy_pass结合起来使用

nginx实现负载均衡用到了proxy_pass代理模块核心配置,将客户端请求

代理转发至一组upstream虚拟服务池

 

 

举报

相关推荐

0 条评论