初识Nginx及编译安装Nginx
初识Nginx及编译安装Nginx
环境说明:
系统版本 CentOS 6.9 x86_64
软件版本 nginx-1.12.2
1、什么是Nginx?
如果你听说或使用过Apache软件,那么很快就会熟悉Nginx软件,与Apache软件类似,Nginx("engine x")是一个开源的,支持高性能,高并发的www服务和代理服务软件。它是由俄罗斯人Igor Sysoev开发的,最初被应用在俄罗斯的大型网站www.rambler.ru上。后来作者将源代码以类BSD许可证的形式开源出来供全球使用。
Nginx因具有高并发(特别是静态资源)、占用系统资源少等特性,且功能丰富而逐渐流行起来。
从软件大的功能应用方面,Nginx不但是一个优秀的Web服务软件,还可以具有反向代理负载均衡功能。在反向代理负载均衡功能方面,它类似于大名鼎鼎的LVS负载均衡以及Haproxy专业代理软件,但是Nginx部署起来更为简单、方便;在缓存服务方面,它又类似于squid等专业的缓存服务软件。
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/
2、Nginx软件使用排名
Web Server软件市场https://w3techs.com/technologies/overview/web_server/all
3、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+)
4、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等专业缓存软件功能。
5、Nginx Web服务介绍
Nginx安装简单,配置文件简洁,而且配置灵活。近两年来,Nginx在国内互联网领域的使用日趋火热,越来越多的网站开始使用,如淘宝,阿里,京东,小米,网易,新浪,赶集等。
Nginx作为Web服务器的主要应用场景:
※ 使用Nginx运行HTML,JS,css,小图片等静态数据(此功能类似于lighttpd软件)
※ Nginx结合FastCGI运行PHP等动态程序(例如使用fastcgi_pass方式)
※ Nginx结合tomcat/resin等支持Java动态程序(常用proxy_pass方式)
6、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。切记企业工作中不要盲从,这可能最终会导致自己无法控制给企业带来灾难的恶果。
7、编译安装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语言源码包,需要编译才能使用
编译安装三部曲
- ./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文件
- 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
- 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完成
博主原创文章,转载请务必注明出处
初识Nginx及编译安装Nginx的更多相关文章
- 从Sources构建nginx,编译安装nginx
从Sources构建nginx 使用configure命令配置构建,定义了系统的各个方面,包括允许nginx用于连接处理的方法,最后创建了一个Makefile. configure命令参数: --he ...
- Nginx 的编译安装和URL地址重写
本文转自:http://www.178linux.com/14119#rd?sukey=ecafc0a7cc4a741b573a095a3eb78af6b4c9116b74d0bbc9844d8fc5 ...
- centos7编译安装nginx及无缝升级https
安装依赖: yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel 下载nginx: wget -c ...
- Centos7编译安装Nginx+keepalived
一.安装环境.主机信息及软件版本 Nginx:1.12.2keepalived:2.0.12时间同步(同步后确认各服务器时间是否一致,不一致需要修改一下时区) 关闭防火墙 二.编译安装Nginx 1. ...
- centos系统编译安装nginx+php环境另加独立mysql教程
以前看过的安装nginx+php环境都带了mysql数据库了,这个是因为很多站长都是nginx+php+mysql都在同一台服务器了,那么今天我们是单独处理了,一个是nginx+php环境,然后mys ...
- Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Mariadb 10.1.20 + Nginx 1.10.2 + PHP 7.1.0 + Laravel 5.3 )
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...
- CentOS7 编译安装 Nginx (实测 笔记 Centos 7.0 + nginx 1.6.2)
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...
- linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本
红帽系列的 linux软件管理分为三类:1. rpm 安装软件.2. yum 安装软件.3. 源码包编译安装.前面两种会在相关专题给出详细讲解.源码包的编译安装是非常关键的,我们知道linux的相关版 ...
- Mac Pro 编译安装 Nginx 1.8.1
#下载相关源码包,统一放到 /usr/local/src 目录下: http://nginx.org/download/nginx-1.8.1.tar.gz http://zlib.net/zlib- ...
随机推荐
- 【BZOJ 2458 最小三角形】
Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1551 Solved: 549[Submit][Status][Discuss] Descripti ...
- altera ip 核小究
用quartus的MegaWizard工具生成一个乘法器multiplier,会在工程目录下产生 multiplier.qip (可选) multiplier_bb.v (可选) multip ...
- html中<a href> </a>的用法
一.绝对跳转 <a href="http://www.baidu.com/">百度</a> 二.相对跳转有如下方式,需要了解(以下的例子中,分别以你的 ...
- Vue props父组件向子组件传值详解
vue官网上可以说有我们想要的一切,先贴上通过prop传值的官网地址:通过prop向子组件传递数据 Prop是什么? Prop是你可以在组件上注册的一些自定义特性.当一个值传递给一个prop特性的时候 ...
- 一种机制,与js类似
我们知道,当两个条件进行逻辑与操作的时候,其中任何一个条件为假,则表达式的结果为假.所以,遇到(A 且 B)这种表达式,如果A为假的话,B是不是真假都无所谓了,当遇到一个假条件的时候,程序也就没有必要 ...
- 一篇不错的v4l2入门文档【转】
转自:http://blog.chinaunix.net/uid-26851094-id-3270803.html 原帖地址: http://www.isongzi.com/2009/02/23/v4 ...
- [BZOJ4756][Usaco2017 Jan]Promotion Counting 树状数组
4756: [Usaco2017 Jan]Promotion Counting Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 305 Solved: ...
- html5进阶之canvas图像基础
1.首先还是使用之前讲过的Image()函数来预加载图像. 在调用图像之前,需创建一个事件监听器,为其保证图像已经正确的加载. 如下图: 监听图片已经正确加载 2.把图像显示在画布上面,这里将不再使用 ...
- Dell Inspiron 7520 安装Ubuntu 14.04 LTS
我的电脑是Dell Inspiron 7520,之前用的Windows 7, 装了虚拟机,再在虚拟机里面装Ubuntu, 电脑一直卡顿,一怒之下,升级了内存,直接16G,然后,还是卡顿,CPU是i5的 ...
- HDU 2553 N皇后问题(回溯 + 剪枝)
本文链接:http://i.cnblogs.com/EditPosts.aspx?postid=5398797 题意: 在N*N(N <= 10)的方格棋盘放置了N个皇后,使得它们不相互攻击(即 ...