nginx入门

目录:

  1. Nginx简介
  2. Nginx工作原理
  3. Nginx安装

Nginx简介

Nginx (“engine x”) 是一个高性能 HTTP 和 反向代理 服务器、IMAP、POP3、SMTP 服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。其将源代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

Nginx 特点是占有内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好。

Nginx 相对于 Apache 优点如下:

  • 高并发响应性能非常好,官方 Nginx 处理静态文件并发 5w/s;
  • 负载均衡及反向代理性能非常强;
  • 系统内存和 CPU 占用率低;
  • 可对后端服务进行健康检查;
  • 支持 PHP cgi 方式和 FastCGI 方式;
  • 可以作为缓存服务器、邮件代理服务器;
  • 配置代码简洁且容易上手。

回到目录



Nginx工作原理

Nginx WEB 服务器最主要就是各种模块的工作,模块从结构上分为核心模块、基础模块和第三方模块,其中三类模块分别如下:

  • 核心模块:HTTP 模块、EVENT 模块和 MAIL 模块等;
  • 基础模块:HTTP Access 模块、HTTP FastCGI 模块、HTTP Proxy 模块和 HTTP Rewrite 模块;
  • 第三方模块:HTTP Upstream Request Hash 模块、Notice 模块和 HTTP Access Key模块、Limit_req 模块等;

Nginx 的模块从功能上分为如下三类。

  • Handlers(处理器模块):此类模块直接处理请求,并进行输出内容和修改headers 信息等操作,Handlers 处理器模块一般只能有一个;
  • Filters (过滤器模块):此类模块主要对其他处理器模块输出的内容进行修改操作,最后由 Nginx 输出;
  • Proxies (代理类模块):此类模块是 Nginx 的 HTTP Upstream 之类的模块, 这些模块主要与后端一些服务比如 FastCGI 等进行交互,实现服务代理和负载均衡等功能。

与apache的区别

Nginx 的高并发得益于其采用了 epoll 模型,与传统的服务器程序架构不同,epoll 是 Linux 内核 2.6 以后才出现的,Nginx 采用 epoll 模型,异步非阻塞,而 apache 采用的是 select 模型:

  • Select 特点:select 选择句柄的时候,是遍历所有句柄,也就是说句柄有事件响应时,select 需要遍历所有句柄才能获取到哪些句柄有事件通知,因此效率是非常低。
  • epoll 的特点:epoll 对于句柄事件的选择不是遍历的,是事件响应的,就是句柄上事件来就马上选择出来,不需要遍历整个句柄链表,因此效率非常高。

Nginx工作流程
在这里插入图片描述

回到目录



Nginx安装

Nginx WEB 安装时可以指定很多的模块,默认需要安装 Rewrite 模块,也即是需要系统有 PCRE 库,安装 Pcre 支持 Rewrite 功能。

安装过程:

#安装 相应库支持
yum install pcre-devel pcre wget openssl openssl-devel -y 

#下载 Nginx 源码包
cd /usr/src
wget -c http://nginx.org/download/nginx-1.12.0.tar.gz 

#解压 Nginx 源码包
tar -xzf nginx-1.12.0.tar.gz

#进入解压目录,然后 sed 修改 Nginx 版本信息为 JWS
cd nginx-1.12.0
sed -i -e 's/1.12.0//g' -e 's/nginx\//JWS/g' -e 's/"NGINX"/"JWS"/g' src/core/nginx.h

#预编译 Nginx
useradd www
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

#.configure 预编译成功后,执行 make 命令进行编译
make

#make 执行成功后,执行 make install 正式安装
make install

#至此 Nginx WEB 服务器安装完毕。

Nginx预编译模块详解

--with-http_ssl_module     如果需要对流量进行加密,可以使用该选项,在URLs中开始部分将会是https(需要OpenSSL库)
--with-http_realip_module  如果你的Nginx在七层负载均衡器或者是其他设备之后,它们将http头中的客户端IP地址传递,那么你将会需要启用这个模块。在多个客户处于一个IP地址的情况下使用
--with-http_addition_module 这个模块作为输出过滤器,使你能够在请求经过一个location前或者后时在该location本身添加内容
--with-http_xslt_module    该模块用于处理XML响应转换,基于一个或者多个XSLT格式(需要libxml2和libxslt库)
--with-http_image_filter_module  该模块被作为图像过滤器使用,在将图形投递到客户之前进行处理(需要libgd库)
--with-http_geoip_module    使用该模块,能够设置各种变量以便在配置文件中区段使用,基于地理位置查找客户端IP地址(需要MaxMfind GeoIP库和相应的预编译数据库文件)
--with-http_sub_module      该模块实现了替代过滤,在响应中用一个字符串替代另一个字符串
--with-http_dav_module      启用这个模块将激活使用WebDAV的配置指令。注意:这个模块也只在有需要使用的基础上启用,如果配置不正确,它将带来安全问题。
--with-http_flv_module      如果需要提供Flash流媒体视频文件,那么该模块将会提供伪流媒体
--with-http_mp4_module      这个模块支持H.264/AAC文件伪流媒体
--with-http_gzip_module     当被调用的资源没有.gz结尾格式的文件时,如果想支持发送预压缩版本的静态文件,那么使用该模块
--with-http_gunzio_module   对应不支持gzip编码的客户,该模块用于为客户解压缩预压缩内容
--with-http_random_index_module 如果你想提供从一个目录中随机选择文件的索引文件,那么这个模块需要被激活
--with-http_secure_link_module  该模块提供了一个机制,它会将一个哈希值链接到一个URL中,因此,只有那些使用正确的密码能够计算链接
--with-http_stub_status_module  启用这个模块后会收集Nginx自身的状态信息。输出的状态信息可以使用RRDtool或类似的东西来绘制成图
--with-pcre         启用nginx正则依赖库,主要对nginx配置中正则表达进行支持,例如rewrite模块。

启动Nginx服务

# 检查配置文件
[root@localhost nginx-1.12.0]# /usr/local/nginx/sbin/nginx -t
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

# 启动服务
[root@localhost nginx-1.12.0]# /usr/local/nginx/sbin/nginx 
[root@localhost nginx-1.12.0]# ps -ef | grep nginx
root      4903     1  0 17:25 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
www       4904  4903  0 17:25 ?        00:00:00 nginx: worker process
root      4908  1066  0 17:25 pts/0    00:00:00 grep --color=auto nginx

回到目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值