【Web】Nginx & OpenResty

Nginx:

  参考:https://www.runoob.com/w3cnote/nginx-setup-intro.html   https://www.nginx.cn/doc/

  master-worker工作模式

详细的参数说明:参考 https://www.cnblogs.com/54chensongxia/p/12938929.html

部署(高可用):Keepalived+Nginx实现高可用。请求不要直接打到Nginx上,应该先通过Keepalived(这就是所谓虚拟IP,VIP)

动静分离(静态资源):location中root代表是静态资源

  第一:location可以进行正则匹配,应该注意正则的几种形式以及优先级。(这里不展开)

  第二:Nginx能够提高速度的其中一个特性就是:动静分离,就是把静态资源放到Nginx上,由Nginx管理,动态请求转发给后端。

  第三:我们可以在Nginx下把静态资源、日志文件归属到不同域名下(也即是目录),这样方便管理维护。

  第四:Nginx可以进行IP访问控制,有些电商平台,就可以在Nginx这一层,做一下处理,内置一个黑名单模块,那么就不必等请求通过Nginx达到后端在进行拦截,而是直接在Nginx这一层就处理掉。

     

反向代理:location这一段配置中的root替换成proxy_pass,动态请求,转发到如tomcat

     Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。

    Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器。

    Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器  

负载均衡upstream:

  样例:http://nginx.org/en/docs/http/ngx_http_upstream_module.html

  负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,

    ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。

  上面的反向代理中,我们通过proxy_pass来指定Tomcat的地址,很显然我们只能指定一台Tomcat地址,那么我们如果想指定多台来达到负载均衡呢?

  第一,通过upstream来定义一组Tomcat,并指定负载策略(IPHASH、加权论调、最少连接),健康检查策略(Nginx可以监控这一组Tomcat的状态)等。

  第二,将proxy_pass替换成upstream指定的值即可。

      负载均衡问题是,一个请求,可以到A server,也可以到B server,这完全不受我们的控制,当然这也不是什么问题,只是我们得注意的是:用户状态的保存问题,如Session会话信息,不能在保存到服务器上。 

 

虚拟主机技术:

在使用Nginx服务器提供Web服务时,利用虚拟主机的技术就可以避免为每一个要运行的网站提供单独的Nginx服务器,也无需为每个网站对应运行一组Nginx进程。虚拟主机技术使得Nginx服务器可以在同一台服务器上只运行一组Nginx进程,就可以运行多个网站。
每一个http块都可以包含多个server块,而每个server块就相当于一台虚拟主机

OpenResty

  参考:https://www.runoob.com/w3cnote/openresty-intro.html    http://openresty.org/cn/

  基于 NGINX 的可伸缩的 Web 平台,方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

  OpenResty® 通过汇聚各种设计精良的 Nginx 模块(主要由 OpenResty 团队自主开发),从而将 Nginx 有效地变成一个强大的通用 Web 应用平台。这样,Web 开发人员和系统工程师可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,快速构造出足以胜任 10K 乃至 1000K 以上单机并发连接的高性能 Web 应用系统。

  OpenResty® 的目标是让你的Web服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL、PostgreSQL、Memcached 以及 Redis 等都进行一致的高性能响应。

原文地址:https://www.cnblogs.com/clarino/p/15612241.html