Nginx的反向代理

java分享会

分享人:韦 杰

1.背景介绍

2.知识剖析

3.常见问题

4.解决方案

5.编码实战

6.扩展思考

7.参考文献

8.更多讨论

1.背景介绍

在传统的Web服务器体系结构中,每个客户端连接作为一个单独的进程或线程处理,随着网站的流行度增加,并发连接数量的增加,Web服务器减慢,延迟了对用户的响应。

从技术的角度来看,产生一个单独的进程/线程需要将CPU切换到新的任务并创建一个新的运行时上下文,消耗额外的内存和CPU时间,从而对性能产生负面影响。

Nginx开发的目标是实现10倍以上的性能,优化服务器资源的使用,同时也能够扩展和支持网站的动态增长。 因此,Nginx成为最知名的模块化,事件驱动,异步,单线程Web服务器和Web代理之一。

2.知识剖析

1、正向代理

正向代理隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求,某些科学上网工具扮演的就是典型的正向代理角色。

这里有张图

2、反向代理

反向代理隐藏了真实的服务器,当我们请求www.baidu.com的时候,就像拨打10086一样,背后可能有成千上万台服务器为我们服务,但具体时间哪一台,我们不知道,也不 需要知道,我们只需要知道反向代理服务器是谁就好了。反向代理服务器会帮我们把请求转发到真实的服务器那里去。

这里有张图

正向代理代理的对象是客户端,反向代理代理的对象是服务器

3.常见问题

1、什么是HTTP Server(HTTP服务器),什么是Application Server(应用服务器)?

4.解决方案

1、Http Server又叫做Web Server,用于处理客户端对静态资源的请求或者用作反向代理将请求转发给Application Server,Nginx和Apache属于HTTP服务器;

2、Application Server 又叫做 Web应用容器,用于加载运行web应用,用来处理动态的请求,Tomcat、Jetty、Resin属于应用服务器。

这里有张图

5.编码实战

1、负载均衡的几种模式配置方法

2、Nginx做静态资源伺服

6.扩展思考

Nginx是怎样应对几十万、上百万的并发请求的?

7.参考文献

http://www.jb51.net/article/81131.htm

https://www.cnblogs.com/vipyoumay/p/5853694.html

8.更多讨论

鸣谢

感谢观看,如有出错,恳请指正

BY : 韦 杰