当前位置: 首页 > news >正文

Nginx 和 OpenResty

Nginx 和 OpenResty

何大炮关注

0.0972018.09.11 21:15:08字数 889阅读 9,046

Nginx

Nginx 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。
1、处理响应请求很快
2、高并发连接
3、低的内存消耗
4、具有很高的可靠性:
5、高扩展性
6、热部署
master 管理进程与 worker 工作进程的分离设计,使得 Nginx 具有热部署的功能,可以在 7 × 24 小时不间断服务的前提下,升级 Nginx 的可执行文件。也可以在不停止服务的情况下修改配置文件,更换日志文件等功能。

7、自由的 BSD 许可协议

Nginx 日志主要有两种:access_log(访问日志) 和 error_log(错误日志)。

Nginx的location参数有具体的匹配规则:

  • 首先精确匹配 =
  • 其次前缀匹配 ^~
  • 其次是按文件中顺序的正则匹配
  • 然后匹配不带任何修饰的前缀匹配。
  • 最后是交给 / 通用匹配
  • 当有匹配成功时候,停止匹配,按当前匹配规则处理请求

Nginx 静态文件服务:最重要的就是缓存,利用好了Nginx的缓存,我们就可以提高响应速度,同时在服务器宕机的时候返回缓存中的旧文件而不是500。

正向代理:客户端用到的代理服务器就是正向代理。
反向代理:隔绝服务器和所有客户端,接受所有客户端请求,转发给相应的内部服务器。Nginx就是一个典型的反向代理。

负载均衡:利用多台服务器提供单一服务。提高了服务器的处理能力,同时,当有服务器宕机的时候,可以提供备用服务器,起到很好的容错作用。
负载均衡常用算法: 轮询(默认);ip_hash(共享session);fair(响应时间快就分配);url_hash;least_conn(最少连接负载均衡);hash。

陷阱和常见错误

OpenResty

OpenResty(也称为 ngx_openresty)是一个全功能的 Web 应用服务器。它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项。

通过揉和众多设计良好的 Nginx 模块,OpenResty 有效地把 Nginx 服务器转变为一个强大的 Web 应用服务器,开发人员可以使用 Lua 编程语言对 Nginx 核心以及现有的各种 Nginx C 模块进行脚本编程。

OpenResty 充分利用 Nginx 的事件模型来进行非阻塞 I/O 通信。不仅仅是和 HTTP 客户端间的网络通信是非阻塞的,与MySQL、PostgreSQL、Memcached 以及 Redis 等众多远方后端之间的网络通信也是非阻塞的。

ngx_openresty 目前有两大应用目标

  • 通用目的的 web 应用服务器。在这个目标下,现有的 web 应用技术都可以算是和 OpenResty 或多或少有些类似,比如 Nodejs, PHP 等等。ngx_openresty 的性能(包括内存使用和 CPU 效率)算是最大的卖点之一。
  • Nginx 的脚本扩展编程,用于构建灵活的 Web 应用网关和 Web 应用防火墙。有些类似的是 NetScaler。其优势在于 Lua 编程带来的巨大灵活性。

相关文章:

  • 人有时候BT多了,会遭到报应的!这不,连MSN都看不下去了!
  • mac下redis 安装与使用
  • docker1
  • 在J2ME和WAP中实现电话呼叫功能
  • Linux系统如何更改主机名,即 [root@xxxx] 改成 [root@localhost]
  • 解决Netbeans和Eclipse中的图片路径问题
  • 安装docker-compose时报错Command python setup.py egg_info failed with error code 1 in /tmp/pip-build*的解决
  • 显示一个java跳转页面
  • ImportError: No module named 'ConfigParser' 降级处理即可pip install docker-compose==1.21.2
  • 给你的2D游戏添加3D效果
  • docker2 和docker-compose
  • docker3 docker-compose.yml 文件编写
  • nginx基础1
  • nginx1
  • 承认多元化,保持宽容
  • 2017前端实习生面试总结
  • crontab执行失败的多种原因
  • eclipse(luna)创建web工程
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • interface和setter,getter
  • Java多线程(4):使用线程池执行定时任务
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Vue--数据传输
  • 安装python包到指定虚拟环境
  • 百度小程序遇到的问题
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 老板让我十分钟上手nx-admin
  • 聊一聊前端的监控
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 优秀架构师必须掌握的架构思维
  • 在weex里面使用chart图表
  • Spring Batch JSON 支持
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​插件化DPI在商用WIFI中的价值
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (pytorch进阶之路)扩散概率模型
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (十一)图像的罗伯特梯度锐化
  • .form文件_一篇文章学会文件上传
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET 中 GetProcess 相关方法的性能
  • .ui文件相关
  • /bin/bash^M: bad interpreter: No such file or directory
  • ??myeclipse+tomcat
  • @Conditional注解详解
  • [100天算法】-目标和(day 79)
  • [Android] Upload package to device fails #2720
  • [AR Foundation] 人脸检测的流程
  • [AX]AX2012 SSRS报表Drill through action
  • [CUDA 学习笔记] CUDA kernel 的 grid_size 和 block_size 选择
  • [iOS]-NSTimer与循环引用的理解
  • [javaee基础] 常见的javaweb笔试选择题含答案