nginx介绍和安装
1.nginx的介绍
1.1 nginx的优势
1) 作为Web服务器,Nginx处理静态文件、索引文件,自动索引的效率非常高。
2) 作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度。
3)作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡。
4) 在性能方面,Nginx是专门为性能优化而开发的,在实现上非常注重效率。它采用内核Poll模型,可以支持更多的并发连接,最大可以支持对50 000个并发连接数的响应,而且只占用很低的内存资源。
5) 在稳定性方面,Nginx采取了分阶段资源分配技术,使得CPU与内存的占用率非常低。Nginx官方表示,Nginx保持10 000个没有活动的连接,而这些连接只占用2.5MB内存,因此,类似DOS这样的攻击对Nginx来说基本上是没有任何作用的。
6) 在高可用性方面,Nginx支持热部署,启动速度特别迅速,因此可以在不间断服务的情况下,对软件版本或者配置进行升级,即使运行数月也无需重新启动,几乎可以做到7×24小时不间断地运行。
1.2 nginx的模块和工作原理
1) Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。
2) Nginx的模块从结构上分为核心模块、基础模块和第三方模块, HTTP模块、EVENT模块和MAIL模块等属于核心模块,HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块属于基础模块,而HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块属于第三方模块,用户根据自己的需要开发的模块都属于第三方模块。正是有了这么多模块的支撑,Nginx的功能才会如此强大。
3) Nginx的模块从功能上分为如下三类。
Handlers(处理器模块)。此类模块直接处理请求,并进行输出内容和修改headers信息等操作。Handlers处理器模块一般只能有一个。
Filters (过滤器模块)。此类模块主要对其他处理器模块输出的内容进行修改操作,最后由Nginx输出。
Proxies (代理类模块)。此类模块是Nginx的HTTP Upstream之类的模块,这些模块主要与后端一些服务比如FastCGI等进行交互,实现服务代理和负载均衡等功能。
3) 在工作方式上,Nginx分为单工作进程和多工作进程两种模式。在单工作进程模式下,除主进程外,还有一个工作进程,工作进程是单线程的;在多工作进程模式下,每个工作进程包含多个线程。Nginx默认为单工作进程模式。
4) Nginx的模块直接被编译进Nginx,因此属于静态编译方式。启动Nginx后,Nginx的模块被自动加载,不像Apache,首先将模块编译为一个so文件,然后在配置文件中指定是否进行加载。在解析配置文件时,Nginx的每个模块都有可能去处理某个请求,但是同一个处理请求只能由一个模块来完成。
2 nginx安装
1) Nginx的的运行需要有pcre-devel和zlib-devel的支持,所以安装之前需要先把这两个包装上
yum install pcre-devel zlib-devel -y
2) 创建Nginx用户,便于权限管理
useradd -M -s /sbin/nologin -u 48 nginx
3) 解包,编译,安装
cd /usr/src
wget http://nginx.org/download/nginx-1.6.3.tar.gz
tar zxf nginx-1.6.3.tar.gz
cd nginx-1.6.3
./configure --prefix=/usr/local/nginx-1.6.3 --user=nginx --group=nginx --with-http_stub_status_module --with-http_realip_module
make && make install
4) 作链接,然后启动Nginx
cd /usr/local
ln -s nginx-1.6.3 nginx
/usr/local/nginx/sbin/nginx
[root@LNMP local]# netstat -anput | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3470/nginx
[root@LNMP local]# ps -ef | grep nginx | grep -v grep
root 3470 1 0 20:50 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx 3471 3470 0 20:50 ? 00:00:00 nginx: worker process
3 nginx的启动脚本
编写启动脚本,便于对Nginx进行管理。
脚本内容:
#!/bin/bash
#chkconfig: -
#description: this is a script to control nginx
#Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit
nginx=/usr/local/nginx/sbin/nginx
pid=/usr/local/nginx/logs/nginx.pid
start() {
if [ -e $pid ]
then
action "Nginx already running..." /bin/false && exit
else
$nginx
[ $? -eq ] && {
action "Nginx start is OK..." /bin/true
} || action "Nginx start is error..." /bin/false
fi
}
stop() {
if [ ! -e $pid ]
then
action "Nginx is not running..." /bin/false && exit
else
kill -s QUIT $(cat $pid)
[ $? -eq ] && action "Nginx stop is OK..." /bin/true || action "Nginx stop is error..." /bin/false
fi
}
restart() {
$ stop
$ start
}
reload() {
if [ ! -e $pid ]
then
action "Nginx is not running..." /bin/false && exit
else
kill -s HUP $(cat $pid)
[ $? -eq ] && action "Nginx reload is OK..." /bin/true || action "Nginx reload is error..." /bin/false
fi
}
usage() {
echo "Usage: $0 {start|stop|status|restart|reload"
}
status() {
if [ -e $pid ]
then
echo "Nginx is running..."
else
echo "Nginx is stop..."
fi
}
case $ in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
restart
;;
status)
status
;;
*)
usage
;;
esac
把上面的脚本复制到/etc/init.d/nginx脚本中,并赋予执行权限,添加开机自启动
chmod a+x /etc/init.d/nginx
chkconfig --add nginx
chkconfig nginx on
4 nginx简单管理
4.1 Nginx的启动、关闭和平滑重启
1)检查文件正确性
Nginx提供的配置文件调试功能非常有用,可以快速定位配置文件存在的问题。执行如下命令可检测配置文件的正确性
/usr/local/nginx/sbin/nginx –t
或 /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
当出现下面的提示时,表示配置文件没有问题
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
2) 显示Nginx的版本以及相关编译信息
显示Nginx版本信息
[root@Nginx ~]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.5.0
显示Nginx的编译信息
[root@Nginx ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.5.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-3) (GCC)
configure arguments: --prefix=/usr/local/nginx-1.5.0 --user=nginx --group=nginx --with-http_stub_status_module
3)Nginx的启动,关闭与重启
Nginx对进程的控制能力非常强大,可以通过信号指令控制进程。常用的信号有:
QUIT,表示处理完当前请求后,关闭进程。
HUP,表示重新加载配置,也就是关闭原有的进程,并开启新的工作进程。此操作不会中断用户的访问请求,因此可以通过此信号平滑地重启Nginx。
USR1,用于Nginx的日志切换,也就是重新打开一个日志文件,例如每天要生成一个新的日志文件时,可以使用这个信号来控制。
USR2,用于平滑升级可执行程序。
WINCH ,从容关闭工作进程。
4)Nginx的启动
直接执行/usr/local/nginx/sbin/nginx即可启动
5)Nginx的关闭
killall nginx
或者:
kill -9 pid号
其中,XXX就是信号名,pid是Nginx的进程号,、
6)Nginx的平滑重启
kill -HUP `cat /usr/local/nginx/logs/nginx.pid`
另外可以做个nginx启动脚本,方便管理,
4.2 Nginx常见的编译选项 使用 ./configure --help可获取
--prefix=PATH 定义安装路径
--sbin-path=PATH 设置可执行文件的路径
--conf-path=PATH 设置配置文件路径
--error-log-path=PATH 设置错误日志文件路径
--pid-path=PATH 设置pid文件路径
--lock-path=PATH 设置 nginx.lock 文件路径
--user=USER 设置Nginx工作进程的用户
--group=GROUP 设置Nginx工作进程的组
--with-http_ssl_module — 使用https协议模块。默认情况下,该模块没有被构建。建立并运行此模块的OpenSSL库是必需的。
-with-pcre=path — 设置PCRE库的源码路径
nginx介绍和安装的更多相关文章
- Nginx 介绍和安装
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev ...
- nginx介绍及安装
nginx(Engine x) 静态的www软件 特点: 配置简单 高并发,1-2w,基于异步IO模型(epoll,kqueue) 占用资源少 ...
- nginx介绍与安装
1.nginx作用可以配置数十个场景 2.环境安装 环境确认 安装环境 yum -y install gcc gcc-c++ autoconf pcre-devel make automa ...
- Nginx 介绍和安装(centos7)
本文是作者原创,版权归作者所有.若要转载,请注明出处 什么是 nginx ? Nginx 是高性能的 HTTP 和反向代理的服务器,处理高并发能力是十分强大的,能经受高负 载的考验,有报告表明能支持高 ...
- Nginx 的编译安装和URL地址重写
本文转自:http://www.178linux.com/14119#rd?sukey=ecafc0a7cc4a741b573a095a3eb78af6b4c9116b74d0bbc9844d8fc5 ...
- Nginx的介绍和安装详解
[介绍+安装]Nginx的介绍和安装详解 == 介绍和安装 == Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器, 其性能与IMAP/POP3代理服务器相当.Nginx ...
- 【介绍+安装】Nginx的介绍和安装详解
== 介绍和安装 == Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器, 其性能与IMAP/POP3代理服务器相当.Nginx以其高性能.稳定.功能丰富.配置简单及占用系统 ...
- LNMP架构介绍、MySQL和PHP安装、Nginx介绍
6月6日任务 12.1 LNMP架构介绍12.2 MySQL安装12.3/12.4 PHP安装12.5 Nginx介绍 扩展Nginx为什么比Apache Httpd高效:原理篇 http://w ...
- Linux centosVMware LNMP架构介绍、MySQL安装、PHP安装、Nginx介绍
一. LNMP架构介绍 和LAMP不同的是,提供web服务的是Nginx 并且php是作为一个独立服务存在的,这个服务叫做php-fpm Nginx直接处理静态请求,动态请求会转发给php-fpm ...
随机推荐
- struts2系列(一):struts2入门(struts2的产生、struts2的工作流程、搭建struts2开发环境)
一. struts2的产生 struts1的缺点: 1. ActionForm过多,而且这个ActionForm在很大程度上又和VO(POJO)重复 ...
- (转)MP4文件两种格式AVC1和H264的区别及利用FFMPEG demux为h264码流事项
出自:http://www.mworkbox.com/wp/work/314.html 2013-05-04 MP4的视频H264封装有2种格式:h264和avc1,对于这个细节,很容易被忽略.笔者也 ...
- 监听输入框值变化的最佳方案 oninput 和 onpropertychange (实时监控文本框改变的最佳方案)
公司有个文本框,当输入文字/粘贴/复制 或者是键盘猛按的时候,都希望这个文本框能统计出 输入了多少字 这种用 onchange onkeyup onkepress 都不怎么好使 最后在 ...
- 机器学习——利用SVD简化数据
奇异值分解(Singular Value Decompositon,SVD),可以实现用小得多的数据集来表示原始数据集. 优点:简化数据,取出噪声,提高算法的结果 缺点:数据的转换可能难以理解 适用数 ...
- windows reload()
reload() 方法用于重新加载当前文档.如果该方法没有规定参数,或者参数是 false,它就会用 HTTP 头 If-Modified-Since 来检测服务器上的文档是否已改变.如果文档已改变, ...
- GridView分页的实现 ASP.NET c#(转)特好用
要在GridView中加入 //实现分页 AllowPaging="true" //一页数据10行 PageSize="10" // 分页时触发的事件OnPag ...
- 【Math】矩阵求导
https://en.wikipedia.org/wiki/Matrix_calculus http://blog.sina.com.cn/s/blog_7959e7ed0100w2b3.html
- 源码分析六(org.springframework.util包之Assert类)
一:抽象类Assert 抽象类不能够实例化对象,但是可以被继承,Assert类是功能类,所以方法都是static修饰 所以可以直接 类名.方法 调用. public abstract class A ...
- mysql执行SQL语句时报错:[Err] 3 - Error writing file '/tmp/MYP0G1B8' (Errcode: 28 - No space left on device)
问题描述: 今天一同事在mysql中执行SQL语句的时候,报了/tmp空间不足的问题,报错如下: [SQL] SELECT f.prov as 字段1, MAX( CASE f.flag_name W ...
- 4种实现多列布局css
摘要: 多列布局在网站应用中也是经常见到的,今天就分享4中多列布局. display:table <style> .table { width: auto; min-width: 1000 ...