您的位置:首页 > 运维架构 > Nginx

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文件中,保存用户名和密码的格式:

comment

name1:password1

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)



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: