一、Nginx是什么
二、Nginx实现反向代理
2.1 正向代理和反向代理
2.2 nginx实现反向代理
2.3 nginx实现负载均衡
三、tengine
tengine实现动静分离
四、nginx实现缓存
4.1 为什么需要缓存
4.2 缓存服务的工作原理
4.3 nginx缓存模块
4.4 配置nginx缓存实例
五、memcached
5.1 memcached是什么
5.2 安装配置memcached
一、Nginx是什么 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
目前淘宝在nginx做了二次开发:tengine(见下文)。
正向代理:是一个位于客户端和目标服务器之间的服务器,为了从目标服务器取得内容,客户端向代理发送一个请求并指定目标(目标服务器),然后代理向目标服务器转交请求并将获得的内容返回给客户端。
简单来说:
我是一个用户,我访问不了某网站,但是我能访问一个代理服务器;
这个代理服务器呢,他能访问那个我不能访问的网站;
于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容;
代理服务器去取回来,然后返回给我;
从网站的角度,只在代理服务器来取内容的时候有一次记录;
有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。
反向代理:对于客户端而言它就像是目标服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(目标服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
简单来说,
用户访问 ;
但ooxx.me上并不存在readme页面;
他是偷偷从另外一台服务器上取回来,然后作为自己的内容吐给用户;
但用户并不知情┐(゚~゚)┌
这里所提到的 ooxx.me 这个域名对应的服务器就设置了反向代理功能;
正向代理和反向代理的区别:
(1)从用途上来讲:
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性减少网络使用率。反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问。反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。
另外,反向代理还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。
(2)从安全性来讲:
正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。
反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。
nigix代理是基于ngx_http_proxy模块实现的。该模块有很多配置选项,如:
proxy_pass
指定将请求代理至server的URL路径。
proxy_set_header
将发送至server的报文的某首部进行重写。
proxy_send_timeout
在连接断开之前两次发送到server的最大间隔时长;过了这么长时间后端还是没有收到数据,连接会被关闭。
proxy_read_timeout
是从后端读取数据的超时时间,两次读取操作的时间间隔如果大于这个值,和后端的连接会被关闭。
proxy_connect_timeout
是和后端建立连接的超时时间。
接下来,我们就来仔细说说重点的配置选项: