{eval=Array;=+count(Array);}
nginx可以作为web服务器、缓存服务器、HTTP代理服务器、负载均衡服务器。
Nginx(发音为“ engine-x”)是一种开源软件,最初被设计为高性能Web服务器。今天,Nginx可以完成其他一些任务,包括缓存服务器,反向代理服务器,负载平衡器等等
目前主流使用的web服务器软件,主要有apache、nginx、tomcat、iis等,在全球范围内来说,Apache是现有的最流行的Web服务器,但是在高流量网站中最流行的Web服务器确实nginx,在我国不管是大中小互联网公司,主流选择的也是nginx作为web服务器软件。一份来自Netcraft的调查中,发现Apache的使用率为31.54%,Nginx的使用率为26.20%。
HTTP代理,分两类:一种的正向代理,一种是反向代理。
反向代理和正向代理的区别:
正向代理:针对客户端而言,代理服务器代理客户端,转发请求,并将获得的内容返回给客户端。
反向代理:针对客户端而言,代理服务器就像是原始服务器,代理集群的web节点服务器返回结果。
负载均衡也是Nginx常用的一个功能,基于nginx反向代理。负载均衡其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
简单而言就是当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处理,负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。
Nginx目前支持自带3种负载均衡策略(轮询、加权轮询、IP哈希),还有2种常用的第三方策略(fair、url哈希)。
nginx可以实现图片、css、js等静态资源文件的缓存,nginx作为缓存服务器时是搭配nginx作为反向代理服务器一起使用的。当客户端第一次通过nginx向后端资源服务器请求静态资源,响应给对应的客户端同时自身缓存一份,后续如果请求相同的资源,就不需要再次向后端服务器请求了,除非缓存被清理或者缓存过期。
nginx的几个功能很少单一使用,基本都是几个功能搭配混合在一起使用。做实际项目中,nginx一般作为七层负载均衡器,实现分布式架构和应用服务器高可用,还可以实现动静分离,同时缓存静态资源,减轻后端服务器负载。
由于nginx的模块化设计,通过第三方模块,还可以实现其他一些功能,以上都是nginx自带模块实现的,如果你还知道nginx可以实现哪些功能,欢迎在评论区留言!
我是技术猿小黄,很高兴为您回答,如果您喜欢我的回答,可以关注我,点个赞,谢谢!
Nginx是一款高性能的HTTP和反向代理服务器,同时也支持邮件服务。因其内存占用小、高并发的特性使得在世界范围内使用广泛,像国内互联网大企业无一例外使用的就是Nginx,比如淘宝还基于Nginx开发了Tengine。
既然Nginx应用这么广泛,那它到底能干些啥呢?下面我列举一些场景来说明下Nginx的用途:
1、反向代理
在LNMP这种架构模式下,其实就用到了反向代理。因为Nginx它默认只支持静态资源的请求,比如说PHP脚本也不是由Nginx直接解析的,而是由Nginx反向代理(通过 proxy_pass 指令)到PHP-FPM去解析的。
所以我们通常在Apache、Tomcat、IIS之前加上Nginx,由Nginx反向代理到后端服务器上。
2、负载均衡
当我们的站点访问量大时,为了缓解单一应用服务器的压力我们通常会扩容多台服务器,此时如何把流量分发给不同服务器呢?通过Nginx就可以实现负载均衡了,Nginx负载均衡策略也很多,主要有:RR(轮询)、weight(权重)、ip_hash(IP Hash)、fair(后端服务器响应时间)、url_hash(URL Hash)这几种。
3、动静分离
Nginx本身只支持静态资源的处理,借助Nginx我们可以实现动静分离,即:将静态请求交给Nginx处理,将动态请求通过转发给后端服务器。
4、Nginx扩展
通过Nginx扩展可以实现很多功能,如:
图片在线裁剪;
请求合并;
资源压缩等。
Nginx(发音同engine x)是一个高性能、跨平台的HTTP Server,也可以用作反向代理、负载均衡和HTTP缓存服务器。俄罗斯人Igor Sysoev(伊戈尔·赛索耶夫)在2004年开发的,Nginx是免费的开源软件,根据类BSD许可证的条款发布。目前全球约有50%的网站都是用Nginx做Web服务器。
1、开源免费
Nginx完全开源免费,可以轻松搭建HTTP服务。
相对传统收费的负载均衡器F5,用Nginx搭建负载均衡服务成本比较低。
2、高性能
Nginx是基于C语言开发,在执行效率很高。
3、占用资源少
Ngxin在设计和开发时对占用内存做了大量的优化,1w多个非活跃的HTTP Keep-Alive连接在Nginx中仅消耗2.5MB的内存。
4、跨平台
Nginx可以在在Linux、MacOS、Windows等平台编译部署。
5、模块化扩展
Nginx是高度模块化设计,可以根据抽象的模块接口开发定制相应的模块,以满足业务需求,淘宝的Tengine就是基于Nginx开发定制的,淘宝开发很多有用的模块。
1、Web服务器
Nginx可以搭建Web服务器,由于在性能优于Apache,因此很多公司逐渐用Nginx替换Apache。
2、反向代理
目前很多后端应用服务在部署时都是通过Nginx搭建反向代理,首先client端请求到Nginx的反向代理,然后再转发到后端应用服务上,这样可以很好保护后端应用服务。
3、负载均衡
目前互联网用户成倍增长,单台服务不足以应对海量用户的请求,需要部署多台后端应用服务,因此需要负载均衡器将请求负载到不同后端应用服务上,实现分布式集群。以前都是硬负载均衡器F5,但是F5成本比较高,小公司很难承受起,再者F5功能比较固化,不够灵活,因此Nginx做软负载均衡器就比较流行。
4、HTTP缓存服务
Nginx支持缓存,可以将缓存图片、js、css等,现在很多CDN厂商的CDN缓存都是用的Nginx缓存。
随着互联网的迅猛发展和互联网用户数量的成倍增长,互联网公司都需要应付海量并发请求,Nginx开源免费、高性能等特点会越来越受青睐。
Nginx能做反向代理、负载均衡、HTTP服务器、正向代理和Web缓存等。
Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。
Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。
如果解决了你的疑惑,请点点关注和评论,谢谢支持。
正春华枝俏,待秋实果茂,与君共勉。
NGINX是一个免费、开源、高性能、轻量级的HTTP和反向代理服务器,也是一个电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强。 Nginx 因为它的稳定性、丰富的模块库、灵活的配置和较低的资源消耗而闻名 。目前应该是几乎所有项目建设必备。
Nginx由内核和一系列模块组成,内核提供web服务的基本功能,如启用网络协议,创建运行环境,接收和分配客户端请求,处理模块之间的交互。Nginx的各种功能和操作都由模块来实现。Nginx的模块从结构上分为核心模块、基础模块和第三方模块。
核心模块: HTTP模块、EVENT模块和MAIL模块
基础模块: HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块
第三方模块: HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块及用户自己开发的模块
这样的设计使Nginx方便开发和扩展,也正因此才使得Nginx功能如此强大。Nginx的模块默认编译进nginx中,如果需要增加或删除模块,需要重新编译Nginx,这一点不如Apache的动态加载模块方便。如果有需要动态加载模块,可以使用由淘宝网发起的web服务器Tengine,在nginx的基础上增加了很多高级特性,完全兼容Nginx,已被国内很多网站采用。
Nginx有很多扩展版本
Web服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务,常常以B/S(Browser/Server)方式提供服务。
Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php 等,但是不支持 java。Java 程序一般都通过与 Tomcat 配合完成。
作为一名Java猿帅,肯定要理解下Nginx和Tomcat的区别了:
Nginx、Apache和Tomcat
Nginx—— 由俄罗斯程序员Igor Sysoev所开发的轻量级、高并发HTTP服务器;
Apache HTTP Server Project,一个Apache基金会下的HTTP服务项目,和Nginx功能类似;
Apache Tomcat ,则是Apache基金会下的另外一个项目,是一个Application Server,更准确的说是一个
servlet应用容器,与Apache HTTP Server和Nginx相比,Tomcat能够动态的生成资源并返回到客户端;
Apache HTTP Server和Nginx本身不支持生成动态页面,但它们可以通过其他模块来支持(例如通过Shell、PHP、Python脚本程序来动态生成内容);
一个 HTTP Server 关心的是 HTTP 协议层面的传输和访问控制,所以在 Apache/Nginx 上你可以看到代理、负载均衡等功能。客户端通过 HTTP Server 访问服务器上存储的资源(HTML 文件、图片文件等等)。通过 CGI 技术,也可以将处理过的内容通过 HTTP Server 分发,但是一个 HTTP Server 始终只是把服务器上的文件如实的通过 HTTP 协议传输给客户端。
而应用服务器,则是一个应用执行的容器。它首先需要支持开发语言的运行(对于 Tomcat 来说,就是 Java),保证应用能够在应用服务器上正常运行。其次,需要支持应用相关的规范,例如类库、安全方面的特性。对于 Tomcat 来说,就是需要提供 JSP/Sevlet 运行需要的标准类库、Interface 等。为了方便,应用服务器往往也会集成 HTTP Server 的功能,但是不如专业的 HTTP Server 那么强大,所以应用服务器往往是运行在 HTTP Server 的背后,执行应用,将动态的内容转化为静态的内容之后,通过 HTTP Server 分发到客户端。
正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访 问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。
正向代理“代理”的是客户端。
比如在家办公期间,需要连公司的 VPN 办公,这个就是所谓的”正向代理“。还有我们访问 google也是。
反向代理正好与正向代理相反,反向代理是指以代理服务器来接收Internet上的连接请求,然后将请求转发到内部网络上的服务器,并将服务器上得到的结果返回给客户端,此时代理服务器对外表现就是一个服务器,客户端对代理是无感知的。
反向代理“代理”的是服务端。
再比如,你想本本分分的在“优酷”上看个“爱情片”,youku.com会把你的请求分发到存放片片的那台机器上,这个就是所谓的”反向代理“。
为什么使用反向代理
负载均衡地址重定向
Nginx 的Rewrite主要的功能就是实现URL重写
比如输入360.com 跳转到了360.cn,baidu.cn跳转到了baidu.com
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。 这里指的就是让动态程序(Java、PHP)去访问应用服务器,让缓存、图片、JS、CSS等去访问Nginx。
2. Nginx 安装
下载Nginx
安装需要编译的插件
用于编译c、c++代码的GCC;
用c语言编写的正则表达式函数库Pcre(使用rewrite模块);
用于数据压缩的函式库的Zlib;
安全套接字层密码库OpenSSL(启用SSL支持)
解压、配置(Nginx支持各种配置选项,文末一一列出 Nginx配置选项 )、编译、安装nginx
启动、重启、关闭
验证(浏览器输入ip)
5
回答1
回答0
回答4
回答0
回答0
回答0
回答0
回答0
回答0
回答