配置好了OpenResty之后,访问服务器公网ip就显示OpenResty欢迎页
就说明你这台服务器已经配置好了OpenResty,可以抵挡百万级的请求

项目中哪里用了nginx

  1. 广告的一级缓存
  2. 一级限流,抵挡大量请求
  3. 秒杀时进入秒杀列表页和秒杀详情页都需要先经过OpenResty,抵挡这时候的高并发请求(因为这些详情页都放在OpenResty指定的位置)
  4. 通过lua脚本实现用户登陆前,在openresty被拦截,判断当前要秒杀的商品是不是还有库存,如果没有库存就不让他访问了。
  5. 秒杀时如果有库存,判断用户是否登录,如果没登陆就转到OAuth2.0认证登录

nginx原理

使用了管理进程+工作进程的设计

  1. 管理进程为工作进程的父进程,负责外部指令的接收,工作进程状态的监管,负载均衡等
  2. 工作进程负责客户端请求的处理和响应,工作进程一般按照CPU核数配置并且和处理器一一绑定,降低进程间切换的开销,一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其他进程的请求
    1. 每个worker接收请求的方式为io多路复用,使用epoll,每个worker都维护一个epoll句柄
  3. worker负责接待客户端的请求,master就是监工
  4. master进程创建之后,会建立好需要监听的的socket,然后从master进程再fork出多个worker进程。
  5. nginx使用互斥锁来保证只有一个workder进程能够处理请求,拿到互斥锁的那个进程注册listenfd读事件,在读事件里调用accept接受该连接,然后解析、处理、返回客户端

    nginx多进程模型的好处

  6. 每个worker进程都是独立的,不需要加锁,节省开销

  7. 每个worker进程都是独立的,互不影响,一个异常结束,其他的照样能提供服务

    nginx应用场景

  8. Http服务器(Web服务器)

    1. 性能非常高,非常注重效率,能够经受高负载的考验。支持50000个并发连接数,不仅如此,CPU和内存的占用也非常的低,10000个没有活动的连接才占用2.5M的内存。
  9. 反向代理服务器
    1. 正向代理服务器就是我们平时翻墙用的代理服务器
    2. 浏览器客户端发送请求到反向代理服务器(比如Nginx),由反向代理服务器选择原始服务器提供服务获取结果响应,最终再返回给客户端浏览器
  10. 负载均衡服务器
  11. 动静分离:在商城项目中,将静态页放在nginx规定的地址,就是动静分离

    nginx负载均衡

  12. 轮询:把请求轮流发送到每个服务器上;

  13. 加权轮询:根据服务器的性能差异,为服务器赋予一定的权值,性能高的服务器分配更高的
    权值;
  14. 最少连接:将请求发送给当前连接数最少的服务器上;
  15. 加权最少连接:在最少连接的基础上,根据服务器的性能为每台服务器分配权重,根据权重
    计算出每台服务器能处理的连接数;
  16. 随机算法:与轮询算法类似,适用于服务器性能差不多的场景;
  17. 源地址哈希法:通过对客户端IP计算哈希值之后,对服务器数量取模,得到目标服务器的序号。