阿里云主机

万维景盛

万维景盛官网
两个web服务软件Nginx官方版和Nginx-Openresty版本的区别是什么?我该怎么选择?

众所周知,NGINX有两个著名版本:Nginx官方版和Nginx Openresty版,那么这两个版本的主要区别是什么呢?阿里云代理商北京万维景盛小编为您分享相关的知识。

“OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 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 等都进行一致的高性能响应。”

 - 以上内容摘自NGINX之OpenResty.org官网。

简言之,Openresty版的Nginx并发性能更好效率更高,支持Lua库,对外提供了更多的接口,方便在实际使用中控制。在实际使用中,建议使用Openresty版。

官方版下载地址:http://d.hws.com/free/hwsnginxmaster.zip

Openresty版下载地址:http://d.hws.com/free/HwsNginxMaster(Openresty).zip

扩展阅读:

Nginx/OpenResty详解

Nginx(或OpenResty)在生产场景中使用的广泛程度已经到了令人咂舌的地步。无论其实际的市场占用率如何,以笔者这些年所经历的项目来看,其使用率为100%。

然而,笔者周围的大量开发人员对Nginx(或OpenResty)的了解程度都停留在基本配置的程度,对其核心原理和高性能配置了解不多。

本文不仅为大家解读Nginx的核心原理和高性能配置,还将介绍Nginx+Lua高并发实战编程,帮助大家掌握一个解决高并发问题的新利器。

Nginx简介

Nginx是一个高性能的HTTP和反向代理Web服务器,是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的Web服务器。

Nginx源代码以类BSD许可证的形式发布,其第一个公开版本0.1.0发布于2004年10月4日,2011年6月1日发布了1.0.4版本。Nginx因高稳定性、丰富的功能集、内存消耗少、并发能力强而闻名全球,目前得到非常广泛的使用,比如百度、京东、新浪、网易、腾讯、淘宝等都是Nginx的用户。Nginx相关地址如下:

Nginx有以下3个主要社区分支:

(1)Nginx官方版本:更新迭代比较快,并且提供免费版本和商业版本。

(2)Tengine:Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上针对大访问量网站的需求添加了很多高级功能和特性。

Tengine的性能和稳定性已经在大型的网站(如淘宝网、天猫商城等)得到了很好的检验。它的最终目标是打造一个高效、稳定、安全和易用的Web平台。

(3)OpenResty:2011年,中国人章亦春老师把LuaJIT VM嵌入Nginx中,实现了OpenResty这个高性能服务端解决方案。OpenResty是一个基于Nginx与Lua的高性能Web平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项,用于方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。OpenResty的目标是让Web服务直接跑在Nginx服务内部,充分利用Nginx的非阻塞I/O模型,不仅对HTTP客户端请求,甚至对远程后端(诸如MySQL、PostgreSQL、Memcached以及Redis等)都进行一致的高性能响应。

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

通过以下OpenResty官网的链接地址可以查看到OpenResty支持的组件:

正向代理与反向代理

这里先简明扼要地介绍什么正向代理和反向代理。正向代理和反向代理的用途都是代理服务中进行客户端请求的转发,但是区别还是很大的。

正向代理最大的特点是客户端非常明确要访问的服务器地址,如图7-1所示。

图7-1 正向代理的特点

在正向代理服务器,客户端需要配置目标服务器信息,比如IP和端口。一般来说,正向代理服务器是一台和客户端网络连通的局域网内部的机器或者是可以打通两个隔离网络的双网卡机器。通过正向代理的方式,客户端的HTTP请求可以转发到之前与客户端网络不通的其他不同的目标服务器。

反向代理与正向代理相反,客户端不知道目标服务器的信息,代理服务器就像是原始的目标服务器,客户端不需要进行任何特别的设置。

反向代理最大的特点是客户端不知道目标服务器地址,如图7-2所示。

图7-2 反向代理的特点

客户端向反向代理服务器直接发送请求,接着反向代理将请求转发给目标服务器,并将目标服务器的响应结果按原路返回给客户端。

正向代理和反向代理的使用场景说明:

(1)正向代理的主要场景是客户端。由于网络不通等物理原因,需要通过正向代理服务器这种中间转发环节顺利访问目标服务器。当然,也可以通过正向代理服务器对客户端某些详细信息进行一些伪装和改变。

(2)反向代理的主要场景是服务端。服务提供方可以通过反向代理服务器轻松实现目标服务器的动态切换,实现多目标服务器的负载均衡等。

通俗点来说,正向代理(如Squid、Proxy)是对客户端的伪装,隐藏了客户端的IP、头部或者其他信息,服务器得到的是伪装过的客户端信息;反向代理(如Nginx)是对目标服务器的伪装,隐藏了目标服务器的IP、头部或者其他信息,客户端得到的是伪装过的目标服务器信息。

Nginx的启动命令和参数详解

在Windows平台安装OpenResty并且设置path环境变量之后,就可以启动OpenResty了。OpenResty的原始启动命令为nginx,其参数有-v、-t、-p、-c、-s等,使用说明如下:

(1)-v:表示查看Nginx的版本。

(2)-c:指定一个新的Nginx配置文件来替换默认的Nginx配置文件。

(3)-t:表示测试Nginx的配置文件。如果不能确定Nginx配置文件的语法是否正确,就可以通过Nginx命令的-t参数来测试。此参数代表不运行配置文件,只是测试配置文件。

(4)-p:表示设置前缀路径。C:\dev\refer\LuaDemoProject\src> nginx -p ./ -c nginx-debug.conf在上面的命令中,“-p./”表示将当前目录C:

(5)-s:表示给Nginx进程发送信号,包含stop(停止)、reload(重写加载)。

Linux下OpenResty的启动、停止脚本

为什么要专门介绍Linux系统下OpenResty的启动和停止脚本呢?

(1)在Nginx/OpenResty发布包中并没有提供好用的启动、停止脚本。

(2)掌握一些基础的脚本指令并能编写基础的运行脚本是Java工程师必备的基础能力,很多面试场景都会出现“你使用过哪些Linux操作指令”的面试题。

作为参考,这里提供一份笔者常用的Linux下OpenResty/Nginx的启动脚本,它公布在疯狂创客圈社群网盘上,它的内容如下:

fi使用以上脚本之前,需要在脚本中配置OpenResty/Nginx的安装目录、项目的工作目录、项目的配置文件3个选项。配置完成后,在Linux的命令窗口执行openresty-start.sh启动脚本即可启动OpenResty。

下面简单介绍上面的openresty-start.sh脚本中主要用到的指令:

(1)echo显示命令:用于显示信息到终端屏幕。

(2)ps进程列表:用于显示在本地机器上当前运行的进程列表。

(3)grep查找命令:用于查找文件里符合条件的字符串。

以上3个命令是经常用到的、非常基础的Linux命令。疯狂创客圈社群网盘中除了提供上面的openresty-start.sh脚本之外,还提供了另外3个有用的OpenResty操作脚本,具体如下:

(1)openresty-stop.sh用于停止OpenResty/Nginx。

(2)openresty-status.sh用于输出OpenResty/Nginx的运行状态和进程信息。

(3)openresty-restart.sh用于重启OpenResty/Nginx。

Windows下OpenResty的启动、停止脚本

除了提供Linux下的Shell脚本外,这里还为大家提供Windows脚本文件。Windows下的脚本通常叫作批处理脚本,批处理脚本扩展名为.bat,包含一系列DOS命令。

作为参考,这里提供一份Windows下OpenResty/Nginx的启动、停止、重启、查看状态的脚本,大家可以在疯狂创客圈社群网盘下载,其中启动脚本openresty-start.bat的具体内容如下:

rem输出OpenResty/Nginx的进程信息

使用之前,在启动脚本openresty-start.bat中配置OpenResty/Nginx的安装目录、项目的工作目录、项目的配置文件这3个选项后,在Windows CMD命令窗口中执行openresty-start.bat启动脚本,即可启动OpenResty。

上面的.bat批处理文件主要用到的指令简单介绍如下:

(1)rem注释命令:一般用来给程序加上注释,该命令后的内容不被执行。

(2)echo显示命令:用于显示信息到终端屏幕。

(3)cd目录切换:用于切换当前的目录。

(4)tasklist进程列表:用于显示在本地或远程机器上当前运行的进程列表。

除了上面的openresty-start.bat脚本外,针对Windows系统,本文的配套源码中还提供了3个有用的OpenResty操作批处理脚本,具体如下:

(1)openresty-stop.bat:用于停止OpenResty/Nginx。

(2)openresty-status.bat:用于输出OpenResty/Nginx的运行状态和进程信息。

(3)openresty-restart.bat:用于重启OpenResty/Nginx。

从提高效率的维度来说,这些脚本还是非常有用的。大家可从疯狂创客圈社群网盘自行下载、研究学习和定制使用。

以上这篇文章给大家讲解的是 Nginx/OpenResty区别的详解,以及Nginx的核心原理,希望可以帮助到大家。


< 购物车 > 会员 客服 充值 工单
Top

客服热线

010-80253326

18610695105

客服QQ

请拨总机 010-80253326

咨询售后问题建议 提交工单