初识Nginx及编译安装Nginx

初识Nginx及编译安装Nginx php

环境说明: css

系统版本    CentOS 6.9 x86_64 html

软件版本    nginx-1.12.2 前端

一、什么是Nginx? python

若是你据说或使用过Apache软件,那么很快就会熟悉Nginx软件,与Apache软件相似,Nginx("engine x")是一个开源的,支持高性能,高并发的www服务和代理服务软件。它是由俄罗斯人Igor Sysoev开发的,最初被应用在俄罗斯的大型网站www.rambler.ru上。后来做者将源代码以类BSD许可证的形式开源出来供全球使用。 nginx

Nginx因具备高并发(特别是静态资源)、占用系统资源少等特性,且功能丰富而逐渐流行起来。 c++

    从软件大的功能应用方面,Nginx不可是一个优秀的Web服务软件,还能够具备反向代理负载均衡功能。在反向代理负载均衡功能方面,它相似于大名鼎鼎的LVS负载均衡以及Haproxy专业代理软件,可是Nginx部署起来更为简单、方便;在缓存服务方面,它又相似于squid等专业的缓存服务软件。 web

    Nginx能够运行在Unix,Linux、BSD、Mac OSX、Solaris,以及Microsoft Windows等操做系统中,随着Nginx在国内不少大型网站的稳定高效运行,近两年也逐渐被愈来愈多的中小型网站所使用。当前流行的Nginx Web组合被称为LNMP或LEMP(即Linux+Nginx+MySQL+PHP),其中LEMP里的E取自Nginx("engine x") 面试

Nginx官网http://nginx.org/en/ 正则表达式

淘宝网基于Nginx作二次开发的叫Tengine    http://tengine.taobao.org/

 

二、Nginx软件使用排名

Web Server软件市场https://w3techs.com/technologies/overview/web_server/all

 

三、Nginx的重要特性

Nginx 是一个高性能的 Web 和反向代理服务器, 它具备有不少很是优越的特性:

做为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发链接,体现更高的效率,这点使 Nginx 尤为受到虚拟主机提供商的欢迎。可以支持高达 50,000 个并发链接数的响应,感谢 Nginx 为咱们选择了 epoll and kqueue 做为开发模型。

做为负载均衡服务器:Nginx 既能够在内部直接支持 Rails 和 PHP,也能够支持做为 HTTP代理服务器 对外进行服务。Nginx 用 C 编写, 不管是系统资源开销仍是 CPU 使用效率都比 Perlbal 要好的多。

做为邮件代理服务器: Nginx 同时也是一个很是优秀的邮件代理服务器(最先开发这个产品的目的之一也是做为邮件代理服务器),Last.fm 描述了成功而且美妙的使用经验。

Nginx 安装很是的简单,配置文件很是简洁(还可以支持perl语法),Bugs很是少的服务器: Nginx 启动特别容易,而且几乎能够作到7*24不间断运行,即便运行数个月也不须要从新启动。你还可以在 不间断服务的状况下进行软件版本的升级。

3.1 Nginx特色

※    可针对静态资源高速高并发访问及缓存;

※    可以使用反向代理加速,而且可进行数据缓存;

※    具备简单负载均衡,节点健康检查和容错功能;

※    支持远程FsatCGI服务的缓存加速;

※    支持FastCGI、Uwsei、SCGI、and Memcached Servers的加速和缓存;

※    支持SSL、TLS、SNI;

※    具备模块化的结构:过滤器包括gzip压缩,ranaes支持,chunked响应,XSLT,SSI及图像缩放等功能。在SSI过滤器中,一个包含多个SSI的页面,若是经由FsatCGI或反向代理处理,可被并行处理。

3.2 它所具有的其余www服务特性以下:

※    支持基于名字、端口以及IP的多虚拟主机站点;

※    支持Keep-alive和Ipipelined链接;

※    可进行简单,方便,灵活的配置和管理;

※    支持修改nginx配置,而且在代码上线时,可平滑重启,不中断业务访问;

※    可自定义访问日志格式,临时缓冲写日志操做,快速日志轮询及经过revslog处理日志;

※    可利用信号控制nginx进程;

※    支持3xx-5xx http状态码重定向;

※    支持rewrite模块,支持URI重写及正则表达式匹配;

※    支持基于客户端口地址和HTTP基本认证的访问控制;

※    支持PUT,DELETE,MKCOL,COPY以及MOVE等较特殊的HHTP请求方法;

※    支持FLV流和MP4流技术产品应用;

※    支持http响应速率限制;

※    支持同IP地址的并发链接或请求数限制;

※    支持邮件服务代理。

3.3 企业面试时须要解答以下Nginx HTTP服务器的特点及优势

※    支持高并发能支持几万并发链接(特别是静态小文件业务环境)。

※    资源消耗少,在3万并发链接下,开启10个Nginx线程消耗不到200MB内存。

※    能够作HTTP反向代理及加速缓存,即负载均衡功能,内置对RS节点服务器健康检查功能,这至关于专业的haproxy软件或lvs的功能。

※    具有squid等专业缓存软件等的缓存功能

※    支持异步网络IO事件模型epoll(Linux 2.6+)

 

四、Nginx软件的主要企业功能应用

4.1 做为Web服务软件

    Nginx是一个支持高性能,高并发的Web服务软件,它有不少优越的特性,做为Web服务器,和Apache相比,Nginx可以支持更多的并发链接访问,而占用的资源却更少,效率更高,在功能上也强大了不少,几乎不逊色于Apache。

4.2 反向代理或负载均衡服务

    在反向代理或负载均衡服务方面,Nginx能够做为Web服务,PHP等动态服务及Memcached缓存的代理服务器,它具备相似专业反向代理软件(如Haproxy)的功能,同时也是一个优秀的邮件代理服务软件(最先开发这个产品的目的之一也是做为邮件代理服务),可是Nginx的代理功能仍是相对简单了些,特别是不支持TCP的代理。

4.3 前端业务数据缓存服务

    在Web缓存服务方面,Nginx可经过自身的proxy_cache模块实现类Squid等专业缓存软件功能。

 

五、Nginx Web服务介绍

    Nginx安装简单,配置文件简洁,并且配置灵活。近两年来,Nginx在国内互联网领域的使用日趋火热,愈来愈多的网站开始使用,如淘宝,阿里,京东,小米,网易,新浪,赶集等。

Nginx做为Web服务器的主要应用场景:

※    使用Nginx运行HTML,JS,css,小图片等静态数据(此功能相似于lighttpd软件)

※    Nginx结合FastCGI运行PHP等动态程序(例如使用fastcgi_pass方式)

※    Nginx结合tomcat/resin等支持Java动态程序(经常使用proxy_pass方式)

 

六、Nginx与其余Web软件产品的对比说明

6.1 Apache软件的特色

Apache2.2版本很是稳定强大,据官方说,其2.4版本性能更强。

Prefork模式取消了进程建立开销,性能很高。

处理动态业务数据时,因关联到后端的引擎和数据库,瓶颈不在于apache自己上。

高并发时消耗系统资源相对多一些。

基于传统的select模型,高并发能力有限。

支持扩展库,可经过DSO、apxs方法编译安装额外的插件功能,不须要从新编译Apache。

市场份额在逐年递减

6.2 Nginx软件的特色

基于异步网络I/O模型(epoll,kqueue)。

具有支持高性能,高并发的特性,并发链接可达数万。

对小文件(小于1MB的静态文件)高并发支持很好,性能很高。

不支持相似Apache的DSO模式,扩展库必须编译进主程序(缺点)。

进程占用系统资源比较低。

支持Web,反向proxy,cache三大重点功能,而且都很优秀。

市场份额在逐年快速增长。

6.3 Lighttpd的特色

基于异步网络I/O模型,性能,并发都和Nginx相近。

扩展库是so模式,比Nginx灵活。

目前国内的使用流程比较低,安全性没有Apache和Nginx好。

经过插件(mod secdownload)可实现文件URL地址加密(优势)

社区不灵活,市场份额较低。

6.4 为何Nginx整体性能比Apache高?

    Nginx使用最新的epolll(Linux2.6 内核)和kqueue(freebsd)异步网络I/O模型,而Apache则使用的是传统的select型。目前Linux下能承受高并发的Squid,Memcached软件采用的都是epoll模型。

6.5 Apache select和Nginx epoll区别技术对比

6.6 如何正确选择Web服务器

    虽然国内不少人都在使用Nginx,可是Apache,Lighttpd这两个Web server一样很是强大实用,尤为是Apache,仍旧是到目前为止还是全球使用最普遍的Web服务软件。

    在实际工做中,咱们须要根据业务需求来选择合适的业务服务软件,有关Web服务的选择建议是:

    静态业务:如果高并发场景,尽可能采用Nginx或Lighttpd,首选Nginx。

    动态业务:理论上采用Nginx和Apache都可,建议选择Nginx,要避免相同业务服务软件多样化,额外增长维护成本,动态业务能够由Nginx兼作前端代理,再根据页面元素的类型或者目录,向后转发到后端相应的服务器进行处理。

    若是既有静态业务又有动态业务,就采用Nginx。

    若是并发不是很大,又对Apache很熟悉,采用Apache也是能够的,Apache2.4版本也很强大,并发链接数也有所增长,总的来讲,在知足需求的前提下,先选择本身最擅长的软件,若看上了更好的软件,可在掌握新软件以后逐步替换。虽然动态和静态业务都倾向于Nginx,可是大前提是要熟练掌握Nginx。切记企业工做中不要盲从,这可能最终会致使本身没法控制给企业带来灾难的恶果。

 

七、编译安装Nginx

7.1 建立目录

mkdir -p /service/tools

mkdir /application

cd /service/tools

wget http://nginx.org/download/nginx-1.12.2.tar.gz    下载或者上传nginx包

7.2 解压tar zxvf nginx-1.12.2.tar.gz

7.3 编译安装

yum install gcc gcc-c++ glibc -y        #安装编译器

yum install pcre-devel zlib-devel openssl-devel –y        #装pcre为了重写rewrite提供正则表达式库,装zlib为了gzip提供数据压缩用的函数库,装openssl为 Nginx 模块(如 ssl )提供密码算法、证书以及 SSL 协议等功能

C语言源码包,须要编译才能使用

编译安装三部曲

  1. ./configure(指定编译参数:安装目录及版本)

cd nginx-1.12.2

./configure --prefix=/application/nginx-1.12.2 --pid-path=/var/run/nginx.pid --user=nginx --group=nginx --with-http_ssl_module

./configure -help    #查看帮助

生成Makefile文件

  1. make

make是用来编译的,它从Makefile中读取指令,而后编译

cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules \

        -o objs/src/http/modules/ngx_http_geo_module.o \

        src/http/modules/ngx_http_geo_module.c

  1. make install

make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置

[root@Web01 nginx-1.12.2]# cd /application/nginx-1.12.2/

[root@Web01 nginx1.12.2]# ls -1

conf        #配置文件

html        #网站html文件

logs        #日志

sbin        #二进制的执行文件

7.4 配置

建立软连接

ln -s /application/nginx-1.12.2 /application/nginx

ln -s /application/nginx/sbin/nginx /usr/bin/

建立用户useradd -M -s /sbin/nologin -r -u 88 nginx

-M 不建立用户的HOME目录

-s shell 指定默认登陆shell

-r 建立系统帐户

-u uid 为帐户指定一个惟一的UID

conf目录

fastcgi.conf        配合php

uwsgi_params        配合python

nginx.conf        主配置文件

mime.types        多媒体资源类型配置文件

最小化配置文件

grep -Ev '^$|#' nginx.conf.default >nginx.conf

[root@Web01 conf]# grep -Ev '^$|#' nginx.conf.default >nginx.conf

[root@Web01 conf]# cat nginx.conf

worker_processes 1;        #工做进程数

events {        #event模块

worker_connections 1024;        #默认工做链接数

}

http {            #http模块,nginx核心模块

include mime.types;    #加载的多媒体资源类型配置文件

default_type application/octet-stream;    #默认类型(16进制)

sendfile on;    #优化配置选项

keepalive_timeout 65;        #长链接超时时间65秒

server {

listen 80;    #默认监听的端口

server_name localhost;    #网站域名

location / {    #网站站点根目录位置

root html;    #网站文件

index index.html index.htm;    #网站首页

}

error_page 500 502 503 504 /50x.html;        #错误页面500,502.503.504返回50x.html

location = /50x.html {

root html;

}

}

}

7.5 启动

/application/nginx/sbin/nginx –t            #语法检查并测试

/application/nginx/sbin/nginx            #启动

/application/nginx/sbin/nginx -s reload    #平滑重启,不影响用户访问

/application/nginx/sbin/nginx -s stop        #关闭

/application/nginx/sbin/nginx -V            #查看版本及安装的模块

启动后会生成几个temp目录

浏览器访问

编译安装Nginx完成

 

博主原创文章,转载请务必注明出处

相关文章
相关标签/搜索