大家好,我是IT修真院北京分院第27期的学员,一枚正直纯洁善良的JAVA程序员
今天给大家分享一下,修真院官网JAVA任务三,深度思考中的知识点——nginx服务器有什么作用?什么叫反向代理?为什么要使用反向代理?
视频链接:
https://v.qq.com/x/page/y0502c4k5zu.html
undefined_腾讯视频
1.背景介绍
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)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
2.知识剖析
我精简一下
特点:
反向代理 负载均衡 动静分离...(主要就是这三个)
3.常见问题
4.解决方案
反向代理 :
先来了解正向代理:需要我们用户,手动的设置代理服务器的ip和端口号
我看文章提到了一个翻墙的例子。好理解多了。我想访问一些谷歌,就要绕过我国的路由器 (GFW),那我就要输出一个IP地址来让这个服务器做中继。
可以理解为正向代理是针对用户的。可以理解为正向代理是针对用户的。
反向代理:代理服务器的,用户不需要设置.
用户A始终认为它访问的是原始服务器B而不是代理服务器Z,但实用际上反向代理服务器接受用户A的应答,从原始资源服务器B中取得用户A的需求资源,然后发送给用户A。由于防火墙的作用,只允许代理服务器Z访问原始资源服务器B。尽管在这个虚拟的环境下,防火墙和反向代理的共同作用保护了原始资源服务器B,但用户A并不知情。
针对服务端的。
负载均衡
负载均衡,英文名称为Load Balance,是指建立在现有网络结构之上,并提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。其原理就是数据流量分摊到多个服务器上执行,减轻每台服务器的压力,多台服务器共同完成工作任务,从而提高了数据的吞吐量。
我的理解是
原理就是数据流量分摊到多个服务器上执行,减轻每台服务器的压力,
多台服务器共同完成工作任务,从而提高了数据的吞吐量。
动静分离
静态资源直接可以从Nginx读取。不需要向后面的服务器都去了,动态资源再去向后面web服务器访问。
将静态的资源放到反向服务器,节省用户的访问时间
5.编码实战
undefined_腾讯视频
6,扩展思考
Session的处理。
session共享问题解决方式1:只能在window下好使web服务器解决(广播机制)注意:tomcat下性能低修改两个地方:1.修改tomcat的server.xml 支持共享将 引擎标签下的注释去掉
2.修改项目的配置文件 web.xml中添加一个节点
解决方式2:
可以将session的id放入redis中
解决方式3:
保证一个ip地址永远的访问一台web服务器,就不存在session共享问题了,在linux
在nginx的配置文件中
upstream中添加 ip_hash;
7,问题思考
1、负载均衡策略里的fail方式是不是需要另外配置插件才能使用?
答:是的
Q1、正向代理和反向代理的区别?
答:正向代理是代理客户端发送请求,反向代理是代理服务端接收请求
Q2、动态资源里面嵌入的静态资源有必要使用动静分离吗
答:nginx处理静态资源的性能比普通的应用服务器高6倍左右
Q3、server_name可以配置多个吗
答:可以
8,参考文献
https://baike.baidu.com/item/nginx/3817705?fr=aladdin