nginx反向代理,nginx的upstream和fastcgi模块(第31天)
反向代理 : 工作在应用层的反向代理服务器,该代理服务器必须监听在80端口。lvs是工作在netfilter中的INPUT链上的,并不需要监听在80端口,因为lvs这货在数据从PREROUTING链进入之后,到达INPUT链就被LVS截获处理掉了(也就是调度到后端的RS了),所以请求报文根本没有机会进入到应用层。 反向代理服务器工作原理: 首先反向代理服务器本身也是一个http服务,监听在80端口,当它接受到客户端的请求之后,该反向代理服务器会把自己从当成客户端,来向后端的服务器发送客户端的请求。后端的服务器接收到该请求后,向该反向代理服务器发送响应报文。反向代理服务器接收到响应报文之后就将该报文发回给客户端。这里的后端服务器在nginx中被称之为upstream server。 因为反向代理工作在应用层,该代理可以知道http请求的URL,分析该URL,可以获取到请求的资源是静态的(http://xxxxx.jpg .css .js),或者是动态的(http://xxxxx.php .do .jsp),从而可以做到动静分离。调度到后端的upstream server,upstream server也分为静态和动态server,而且,静态资源不需要做session保持,动态资源需要做session保持。 session保持方法: session绑定:sh算法或者持久链接,来自同一个来源IP的请求都调度至同一个upstream server session复制:每一个upstream server都保存其它的upstream server的session session服务器:session集中保存到memcached,redis(key-value,kv store)中 缓存为王的时代,可以在反向代理服务器中加入对于upstream server的缓存。比如加入PCI-E的固态作为缓存硬件。缓存一般也都是key-value存储的,一般来说key可以存储URL的哈希结果,value就存储URL的对应的资源。 对于任何一个负载均衡器都提供对于后端服务器的健康状态监测。 有一点,nginx的反向代理是工作在应用层的,必然限制与so...