nginx简单介绍
nginx是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力却是在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度,京东,网易,新浪,腾讯,淘宝等。
Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。
处理静态文件,索引文件以及自动索引;打开文件描述符缓冲。
无缓存的反向代理加速,简单的负载均衡和容错。
FastCGI,简单的负载均衡和容错。
模块化的结构。包括 gzipping, byte ranges, chunked responses,以及 SSI-filter 等 filter。如果由 FastCG或其它代理服务器处理单页中存在的多个 SSI,则这项处理可以并行运行,而不需要相互等待。
优点:
Nginx 可以在大多数 UnixLinux OS 上编译运行,并有 Windows 移植版。 Nginx 的1.4.0稳定版已经于2013年4月24日发布,一般情况下,对于新建站点,建议使用最新稳定版作为生产版本,已有站点的升级急迫性不高。
Nginx 的源代码使用 2-clause BSD-like license。
在连接高并发的情况下,Nginx是Apache服务不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型。
*nginx负载均衡是怎么做的
1.DNS解析:在域名解析时分配给不同的服务器IP;
2.IP Hash:根据客户端的IP,将请求分配到不同的服务器上;
3.cookie:服务器给客户端下发一个cookie,具有特定的cookie的请求会分配给它的发行者;
sticky就是基于cookie的一种负载均衡解决方案,通过cookie实现客户端与后端服务器的会话保持,在一定条件下可以保证同一个客户端访问的都是同一个后端服务器。请求来了,服务器发个cookie,并说:下次来带上,直接来找我。
sticky工作原理
sticky是nginx的一个模块,通过分发和识别cookie,来使用同一个 客户端的请求落在同一台服务器。sticky的处理过程如下(假设cookie名称为route):
1.客户端首次发起请求,请求头末带route的cookie。nginx接收请求,发现请求头没有route,则以轮循方式请求分配给后端服务器。
2.后端服务器处理完请求,将响应头和内容返回给nginx.
3.nginx生成route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5,sha1等Hash值。
4.客户端接收请求,并创建route的cookie.
5.客户端再次发送请求时,带上route.
6.nginx接收route,直接转给对应的后端服务器。
nginx操作步骤
nginx的安装:
1.解压nginx包:
先要有nginx-1.14.0.tar.gz的包,解压包
tar zxf nginx-1.14.0.tar.gz
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio ##二进制编译 (如果二进制编译不成功,则需要yum install gcc gcc-c++ pcre-devel openssl-devel -y)
make && make install
./nginx ##开启服务,或者直接nginx也可以开启服务
netstat -antulp ##查看服务端口,80
curl -I localhost ##自己检测自己
**因为6M比较大,所以,我们可以删除这次的安装,通过修改文件使得下次安装会占内存比较小
./nginx -s stop ##停止服务
删除相关文件,并进行清理
vim nginx-1-14.0/usr/core/nginx.h ##编辑文件(删除“nginx”后面的东西)
vim nginx-1.14.0/auto/cc/gcc ##编辑文件(注释掉debug下面一行)
然后进行二进制编译,make && make nstall ,这次安装之后,所占内存会变小(过程同上,省略)
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ ##作链接