nginx学习笔记
2017-12-27 14:46
204 查看
一、简介
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
二、Http特性
处理静态文件,索引文件以及自动索引;
打开文件描述符缓存;
使用缓存加速反向代理;
简单负载均衡以及容错;
远程FastCGI,uwsgi,SCGI,和memcached服务的缓存加速支持;
模块化的架构。过滤器包括gzip压缩、ranges支持、chunked响应、XSLT,SSI以及图像缩放。在SSI 过滤器中,一个包含多个SSI的页面,如果经由FastCGI或反向代理处理,可被并行处理;
支持SSL,TLS SNI。
三、其他HTTP特性
基于名字和IP的虚拟主机;
Keep-alive和pipelined连接支持;
灵活的配置;
重新加载配置以及在线升级时,不需要中断正在处理的请求;
自定义访问日志格式,带缓存的日志写操作以及快速日志轮转;
3xx-5xx错误代码重定向;
重写(rewrite)模块:使用正则表达式改变URI;
根据客户端地址执行不同的功能;
基于客户端IP地址和HTTP基本认证机制的访问控制;
支持验证HTTP referer;
支持PUT、DELETE、MKCOL、COPY以及MOVE方法;
支持FLV流和MP4流;
速度限制;
来自同一地址的同时连接数或请求数限制;
嵌入Perl语言。
四、Nginx国内版本
Tengine是由淘宝网发起的Web服务器项目。它在Nginx 的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网 ,天猫商城 等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于淘宝 、搜狗 等互联网企业。
五、Tengine的编译和安装
网址:http://tengine.taobao.org
1.下载
1)到http://tengine.taobao.org下载tengine-2.2.0.tar.gz
2)用SecureCRTPortable.exe连接Linux,将下载的tengine-2.2.0.tar.gz传输到Linux
3)解压:tar zxvf tengine-2.2.0.tar.gz
进入解压后的目录,./configure检查安装程序系统所依赖的包是否齐全(一般会出现三个异常 :C compiler cc is not found 、PCRE library … not found 、OpenSSL library … not found)
用yum search gcc命令搜索gcc最快的镜像地址fastestmirror(Linux运行库的中心:yum)
找到需要的库后下载:
下载完毕后继续用./configure来查看是否缺失库,将其他两个包也下载了:
yum -y install pcre pcre-devel
Yum -y install openssl openssl-devel
下载完毕再检查后出现下图所示表示包已齐全(/usr/local/nginx 是nginx的安装路径):
2.编译:make
3.安装:make install
启动Nginx:(启动前关闭防火墙:service iptables stop)
cd /usr/local/nginx
cd sbin
./nginx
六、配置
1.Notepad++中找到Nginx的安装的根目录,找到配置文件nginx.conf:
2.修改配置文件,配置负载均衡到后端的Tomcat(具体方法可参考官网文档:http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_upstream_module.html#upstream):
3. nginx -t 检查nginx的配置文件是否正确
nginx -s reload 重启nginx
七、模块功能
1.健康检查模块功能(ngx_http_upstream_check_module)
该模块可以为Tengine提供主动式后端服务器健康检查的功能。
该模块在Tengine-1.4.0版本以前没有默认开启,它可以在配置编译选项的时候开启:./configure –with-http_upstream_check_module
upstream cluster1 {
# simple round-robin
server 192.168.0.1:80;
server 192.168.0.2:80;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_http_send “HEAD / HTTP/1.0\r\n\r\n”;
check_http_expect_alive http_2xx http_3xx;
}
location /status {
check_status;
access_log off;
allow SOME.IP.ADD.RESS;
deny all;
}
· interval:向后端发送的健康检查包的间隔。
· fall(fall_count): 如果连续失败次数达到fall_count,服务器就被认为是down。
· rise(rise_count): 如果连续成功次数达到rise_count,服务器就被认为是up。
· timeout: 后端健康请求的超时时间。
· default_down: 设定初始时服务器的状态,如果是true,就说明默认是down的,如果是false,就是up的。默认值是true,也就是一开始服务器认为是不可用,要等健康检查包达到一定成功次数以后才会被认为是健康的。
· type:健康检查包的类型,现在支持以下多种类型
tcp:简单的tcp连接,如果连接成功,就说明后端正常。
ssl_hello:发送一个初始的SSL hello包并接受服务器的SSL hello包。
http:发送HTTP请求,通过后端的回复包的状态来判断后端是否存活。
mysql: 向mysql服务器连接,通过接收服务器的greeting包来判断后端是否存活。
ajp:向后端发送AJP协议的Cping包,通过接收Cpong包来判断后端是否存活。
· port: 指定后端服务器的检查端口。你可以指定不同于真实服务的后端服务器的端口,比如后端提供的是443端口的应用,你可以去检查80端口的状态来判断后端健康状况。默认是0,表示跟后端server提供真实服务的端口一样。该选项出现于Tengine-1.4.0。
2.ngx_http_auth_basic_module模块(密码机制)
配置范例:
Htpasswd文件中,保存用户名和密码的格式:
name2:password2:comment
name3:password3
先创建htpasswd,再安装httpd:yum -y install httpd
3.ngx_http_rewrite_module模块
指令:
break
if
return
rewrite
rewrite_log
set
uninitialized_variable_warn
举例:
if ($slow) {
limit_rate 10k;
break;
}
提前创建my505.html文件
4.粘性session(解决负载均衡中session共享问题)
该模块是一个负载均衡模块,通过cookie实现客户端与后端服务器的会话保持, 在一定条件下可以保证同一个客户端访问的都是同一个后端服务器。
当用户发出第一个request后,负载均衡器动态的把该用户分配到某个节点,并记录该节点的路由,以后该用户的所有request都绑定到这个路由,用户只会与该server发生交互,这种策略被称为粘性session(session sticky)
Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
二、Http特性
处理静态文件,索引文件以及自动索引;
打开文件描述符缓存;
使用缓存加速反向代理;
简单负载均衡以及容错;
远程FastCGI,uwsgi,SCGI,和memcached服务的缓存加速支持;
模块化的架构。过滤器包括gzip压缩、ranges支持、chunked响应、XSLT,SSI以及图像缩放。在SSI 过滤器中,一个包含多个SSI的页面,如果经由FastCGI或反向代理处理,可被并行处理;
支持SSL,TLS SNI。
三、其他HTTP特性
基于名字和IP的虚拟主机;
Keep-alive和pipelined连接支持;
灵活的配置;
重新加载配置以及在线升级时,不需要中断正在处理的请求;
自定义访问日志格式,带缓存的日志写操作以及快速日志轮转;
3xx-5xx错误代码重定向;
重写(rewrite)模块:使用正则表达式改变URI;
根据客户端地址执行不同的功能;
基于客户端IP地址和HTTP基本认证机制的访问控制;
支持验证HTTP referer;
支持PUT、DELETE、MKCOL、COPY以及MOVE方法;
支持FLV流和MP4流;
速度限制;
来自同一地址的同时连接数或请求数限制;
嵌入Perl语言。
四、Nginx国内版本
Tengine是由淘宝网发起的Web服务器项目。它在Nginx 的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网 ,天猫商城 等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于淘宝 、搜狗 等互联网企业。
五、Tengine的编译和安装
网址:http://tengine.taobao.org
1.下载
1)到http://tengine.taobao.org下载tengine-2.2.0.tar.gz
2)用SecureCRTPortable.exe连接Linux,将下载的tengine-2.2.0.tar.gz传输到Linux
3)解压:tar zxvf tengine-2.2.0.tar.gz
进入解压后的目录,./configure检查安装程序系统所依赖的包是否齐全(一般会出现三个异常 :C compiler cc is not found 、PCRE library … not found 、OpenSSL library … not found)
用yum search gcc命令搜索gcc最快的镜像地址fastestmirror(Linux运行库的中心:yum)
找到需要的库后下载:
下载完毕后继续用./configure来查看是否缺失库,将其他两个包也下载了:
yum -y install pcre pcre-devel
Yum -y install openssl openssl-devel
下载完毕再检查后出现下图所示表示包已齐全(/usr/local/nginx 是nginx的安装路径):
2.编译:make
3.安装:make install
启动Nginx:(启动前关闭防火墙:service iptables stop)
cd /usr/local/nginx
cd sbin
./nginx
六、配置
1.Notepad++中找到Nginx的安装的根目录,找到配置文件nginx.conf:
2.修改配置文件,配置负载均衡到后端的Tomcat(具体方法可参考官网文档:http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_upstream_module.html#upstream):
3. nginx -t 检查nginx的配置文件是否正确
nginx -s reload 重启nginx
七、模块功能
1.健康检查模块功能(ngx_http_upstream_check_module)
该模块可以为Tengine提供主动式后端服务器健康检查的功能。
该模块在Tengine-1.4.0版本以前没有默认开启,它可以在配置编译选项的时候开启:./configure –with-http_upstream_check_module
upstream cluster1 {
# simple round-robin
server 192.168.0.1:80;
server 192.168.0.2:80;
check interval=3000 rise=2 fall=5 timeout=1000 type=http;
check_http_send “HEAD / HTTP/1.0\r\n\r\n”;
check_http_expect_alive http_2xx http_3xx;
}
location /status {
check_status;
access_log off;
allow SOME.IP.ADD.RESS;
deny all;
}
· interval:向后端发送的健康检查包的间隔。
· fall(fall_count): 如果连续失败次数达到fall_count,服务器就被认为是down。
· rise(rise_count): 如果连续成功次数达到rise_count,服务器就被认为是up。
· timeout: 后端健康请求的超时时间。
· default_down: 设定初始时服务器的状态,如果是true,就说明默认是down的,如果是false,就是up的。默认值是true,也就是一开始服务器认为是不可用,要等健康检查包达到一定成功次数以后才会被认为是健康的。
· type:健康检查包的类型,现在支持以下多种类型
tcp:简单的tcp连接,如果连接成功,就说明后端正常。
ssl_hello:发送一个初始的SSL hello包并接受服务器的SSL hello包。
http:发送HTTP请求,通过后端的回复包的状态来判断后端是否存活。
mysql: 向mysql服务器连接,通过接收服务器的greeting包来判断后端是否存活。
ajp:向后端发送AJP协议的Cping包,通过接收Cpong包来判断后端是否存活。
· port: 指定后端服务器的检查端口。你可以指定不同于真实服务的后端服务器的端口,比如后端提供的是443端口的应用,你可以去检查80端口的状态来判断后端健康状况。默认是0,表示跟后端server提供真实服务的端口一样。该选项出现于Tengine-1.4.0。
2.ngx_http_auth_basic_module模块(密码机制)
配置范例:
Htpasswd文件中,保存用户名和密码的格式:
comment
name1:password1name2:password2:comment
name3:password3
先创建htpasswd,再安装httpd:yum -y install httpd
3.ngx_http_rewrite_module模块
指令:
break
if
return
rewrite
rewrite_log
set
uninitialized_variable_warn
举例:
if ($slow) {
limit_rate 10k;
break;
}
提前创建my505.html文件
4.粘性session(解决负载均衡中session共享问题)
该模块是一个负载均衡模块,通过cookie实现客户端与后端服务器的会话保持, 在一定条件下可以保证同一个客户端访问的都是同一个后端服务器。
当用户发出第一个request后,负载均衡器动态的把该用户分配到某个节点,并记录该节点的路由,以后该用户的所有request都绑定到这个路由,用户只会与该server发生交互,这种策略被称为粘性session(session sticky)
相关文章推荐
- Nginx学习笔记(五) 源码分析&内存模块&内存对齐
- Nginx学习笔记(十二):核心结构体
- Nginx学习笔记
- NGINX学习笔记
- Nginx学习笔记~目录索引
- nginx学习笔记
- Nginx学习笔记(六) 源码分析&启动过程
- Nginx学习笔记(十四):创建worker子进程
- Nginx学习笔记二 -- nginx的配置
- nginx学习笔记(2):开发一个简单的HTTP模块
- Nginx学习笔记(一)
- Nginx学习笔记(一)---Linux下安装Nginx
- Nginx学习笔记(七) 创建子进程
- Nginx学习笔记(十五):ngx_setproctitle()
- Nginx学习笔记(一):nginx的安装和配置
- Nginx学习笔记
- Nginx学习笔记(一)——理解IO模型
- Nginx学习笔记(三)--- Nginx实现反向代理和配置负载均衡
- Nginx学习笔记(八) Nginx进程启动分析
- Nginx学习笔记(十八):事件处理框架