大家好,我是IT修真院深圳分院第03期学员,一枚正直纯洁善良的程序员。今天给大家分享一下,修真院官网JAVA(职业)任务3的深度思考—— Nginx的作用是什么?
1.背景介绍
在传统的Web服务器体系结构中,每个客户端连接作为一个单独的进程或线程处理,随着网站的流行度增加,并发连接数量的增加,Web服务器减慢,延迟了对用户的响应。
从技术的角度来看,产生一个单独的进程/线程需要将CPU切换到新的任务并创建一个新的运行时上下文,消耗额外的内存和CPU时间,从而对性能产生负面影响。
Nginx开发的目标是实现10倍以上的性能,优化服务器资源的使用,同时也能够扩展和支持网站的动态增长。 因此,Nginx成为最知名的模块化,事件驱动,异步,单线程Web服务器和Web代理之一。
2.知识剖析
正向代理和反向代理
正向代理:
正向代理隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求,某些科学上网工具扮演的就是典型的正向代理角色。
反向代理:
反向代理隐藏了真实的服务器,当我们请求www.baidu.com的时候,就像拨打10086一样,背后可能有成千上万台服务器为我们服务,但具体时间哪一台,我们不知道,也不需要知道,我们只需要知道反向代理服务器是谁就好了。反向代理服务器会帮我们把请求转发到真实的服务器那里去。
正向代理代理的对象是客户端,反向代理代理的对象是服务器
3.常见问题
什么是HTTP Server(HTTP服务器),什么是Application Server(应用服务器)?
4.解决方案
Http Server又叫做Web Server,用于处理客户端对静态资源的请求或者用作反向代理将请求转发给Application Server,Nginx和Apache属于HTTP服务器;
Application Server 又叫做 Web应用容器,用于加载运行web应用,用来处理动态的请求,Tomcat、Jetty、Resin属于应用服务器。
图:标准的HTTP请求处理流程
5.代码实战
详解nginx的配置文件
http
server
upstream
location(反向代理和静态文件伺服)
日志配置(可以不讲)
6.拓展思考
Nginx每个进程最多开起1024个线程,那么Nginx如何应对几十万、上百万的并发请求的?
7.参考文献
Nginx为Tomcat服务器作反向代理的配置教程http://www.jb51.net/article/81131.htm
Nginx开发从入门到精通http://tengine.taobao.org/book/chapter_02.html
Web服务器、Web容器、Application服务器的区别及联系https://www.cnblogs.com/vipyoumay/p/5853694.html
8.更多讨论
1、负载均衡策略里的fail方式是不是需要另外配置插件才能使用?
答:是的
2、通过配置权重值的方式进行负债均衡,是随机访问upstream节点配置的server,然后总的访问次数次基本上等于负债均衡的权重值?
答:是的
PPT戳这里
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧。