0
点赞
收藏
分享

微信扫一扫

18.Nginx

小猪肥 2021-09-28 阅读 20

正向代理和反向代理

  1. 正向代理
    正向代理类似一个跳板机,代理访问外部资源。


例如:Opera浏览器都是把请求发送到自己的代理服务器,然后代理服务器去请求真正的地址并处理数据压缩返回,提高速度;正向代理实际上访问就是外部地址

  1. 反向代理
    实际运行方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。代理服务器连接同一个网络(大部分是内网服务没有公网ip)的服务器提供统一入口出口。


  1. 负载均衡原理
    负载均衡,单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某台服务器负载高宕机和某台服务器闲置的情况。那么负载均衡的前提就是要2台以上服务器才能实现。


  2. 负载均衡配置


代理缓存


所谓鲁棒性就是健壮性

  1. 缓存文件放在哪


  2. 指定哪些请求被缓存


  3. 缓存有效期


  4. 指定请求不走缓存


Lua扩展Nginx

  1. ngx_lua模块
    Nginx需要用C开发,而且必须符合一系列复杂的规则,最重要的用C开发模块必须要熟悉Nginx的源代码,使得开发者望而生畏。

ngx_lua模块通过将lua解释器集成进Nginx,可以采用lua脚本实现业务逻辑。
该模块具备以下特性:

  • 高并发、非阻塞的处理各种请求
  • Lua内建协程,这样就可以很好的将异步回调转换成顺序调用的形式
  • 每个协程都有一个独立的全局环境(变量空间),继承于全局共享的、只读的"common data"

得益于Lua协程的支持,ngx_lua的处理一万个并发请求时只需要很少的内存。根据测试,ngx_lua处理每个请求只需要2kb的内存,如果使用LuaJIT则会更少。

  1. 协程


Nginx的每个Worker进程都是epoll或kqueue这样的事件模型之上,封装成协程,每个请求都有一个协程进行处理。这正好与Lua内建协程的模型时一致的,所以即使ngx_lua需要执行Lua,相对于C有一定的开销,但依然能保证高并发能力

  1. Nginx进程模型


  2. HTTP请求处理


  1. ngx_lua指令


  1. OpenResty


  2. ngx_lua实例


Nginx实践

  1. Nginx监听端口


  1. Nginx虚拟主机



之前修改了host文件解析yes.163.com到本地的127.0.0.1:80;同时访问yes.163.com其实被location /会通过proxy_pass解析到http://origin.163.com。会去upstream解析真的地址,如果有多个则默认轮询返回对应地址。同时8080在最下面然后了字符串。最终就会返回最后一行return的字符串

  1. Nginx配置location


注意:location是有顺序的,如果一个请求有可能被多个location匹配,实际上这个请求会被第一个location处理。最后,location/{}会处理所有的请求


  1. Nginx常规配置


Nginx高性能配置

  1. Nginx事件模型


  2. Nginx配置实例


举报

相关推荐

0 条评论