天天学JAVA-nginx(1)

mac2024-01-25  47

如果觉得我写的还行,请关注我的博客并且点个赞哟。本文主要介绍Nginx相关基础知识,通过学习本文,你将掌握Nginx相关基础知识

1.nginx简介? 2.nginx功能特性? 3.nginx功能特性基本HTTP服务 4.nginx功能特性高级HTTP服务 5.nginx功能特性邮件代理服务 6.HTTP代理和反向代理 7.负载均衡 8.WEB缓存 9.一道阿里面试题,你会做吗?

1.ngnix简介?

Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高连接并发的情况下,Nginx是Apache服务器不错的替代品。

2.nginx功能特性

nginx服务器以其功能丰富著称它既可作为HTTP服务器,也可以作为反向代理服务器,或者邮件服务器;能够快速响应静态页面(HTML)的请求;支持FastCGI、SSL、Virtual Host 、URL Rewrite、HTTP Basic Auth 、 Gzip等大量使用功能,并支持更多的第三方功能模块拓展。 我们将nginx提供的基本服务从大体上归纳为基本http服务、高级http服务和邮件服务三大类。

2.1基本HTTP服务

在Nginx提供的基本HTTP服务中,主要包含以下功能特性: 1)处理静态文件(如HTML静态网页及请求);处理索引文件以及支持自动索引 2)打开并自行管理文件描述缓存 3)提供反向代理服务,并且可以使用缓存加速反向代理、同时完成简单负载均衡及容错 4)提供远程FastCGI服务的缓存机制,加速访问,同事完成简单的负载均衡及容错 5)使用Nginx的模块化特性提供过滤器功能。Nginx基本过滤器包裹gzip压缩,ranges支持、chunked响应、XSLT、SSI以及图像缩放等。其中,针对包含多个SSI的页面,经由FastCGI或反向代理、SSI过滤器可以并行处理 6)支持HTTP下安全套接层安全协议SSL

2.2高级HTTP服务

1)支持基于名字IP的虚拟主机设置, 2)支持HTTP/1.0中的KEEP-Alive模式和管线模型连接 3)支持重新加载配置以及在线升级时,无需中断正在处理的请求 4)自定义访问日志格式、带缓存的日志写操作以及快速日志轮转。 5)提供3XX~5XX错误代码重定向功能 6)支持重写模块拓展 7)支持HTTP DAV模块,从而为Http WebDAV提供PUT,DELETE,MKCOOL,COPY以及MOVE方法 8)支持FLV流和MP4流传输 9)支持网络监控,包括基于客户端IP地址和基本认证机制的访问控制、速度限制、来自同一地址的同时连接数或请求连接数限制 10)支持嵌入Perl语言

2.3邮件代理服务

1)支持外部使用HTTP认证服务器重定向到用户到IMAP/POP3后端,并支持IMAP认证方式(LOGIN,AUTHLOGIN/PLAN/CRAM-MD5)和POP3认证方式(USER/PASS,APOP,AUTHLOGIN/PLAIN/CRAM-MD5) 2)支持使用外部HTTP认证服务器认证用户后重定向连接到内部SMTP后端,并支持SMTP认证方式(AUTHLOGIN/PLAIN/CRAM-MD5) 3)支持邮件代理服务下的安全套接层安全协议SSL 4)支持纯文本通信协议的拓展协议STARTTLS

3.HTTP代理和反向代理

代理服务和反向代理服务是Nginx服务器作为WEB服务器的主要功能之一,尤其是反向代理服务,是应用十分广泛地功能。

3.1正向代理

正向代理,针对客户机来说,代理服务器可见,客户机发送请求,不能直接访问服务器,把请求交给代理服务器,代理服务器转发请求给目的服务器,获取请求数据,把数据交给用户。如下图

正向代理特点: 1) 从宏观上分析:代理服务器和客户机处于统一机房。

2) 客户机是知道代理服务器存在

3) 代理服务器必须经过配置然后才能使用。

3.2反向代理

反向代理应该是Nginx做的最多的一件事了,反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。简单来说就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器,而代理服务器能被外部网络访问的同时又跟真实服务器在同一个网络环境,当然也可能是同一台服务器,端口不同而已。

反向代理:针对客户机来说,反向代理服务器针对客户来说是不可见,客户机发送请求,反向代理服务器转发请求,返回结果。

反向代理特点:

1) 反向代理服务器和项目部署在同一个机房。

2) 反向代理服务器对客户机是不可见的。

4.负载均衡

负载均衡也是Nginx常用的一个功能,负载均衡其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。简单而言就是当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处理,负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。而Nginx目前支持自带3种负载均衡策略(内置策略),还有2种常用的第三方策略(扩展策略)。

4.1 三种内置策略

轮循(PR) 默认策略,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

加权轮循 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

ip_hash 上面的2种方式都有一个问题,那就是下一个请求来的时候请求可能分发到另外一个服务器,当我们的程序不是无状态的时候(采用了session保存数据),这时候就有一个很大的很问题了,比如把登录信息保存到了session中,那么跳转到另外一台服务器的时候就需要重新登录了,所以很多时候我们需要一个客户只访问一个服务器,那么就需要用iphash了,iphash的每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

4.2两种扩展策略

fair 按后端服务器的响应时间来分配请求,响应时间短的优先分配。

url_hash: 按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包。

5.WEB缓存

Nginx服务器的Web缓存服务主要由Proxy_Cache相关指令集合FastCGI_Cache相关指令集构成。其中Proxy_Cache主要用于在Nginx服务器提供反向代理服务时,对后端源服务器的返回内容进行URL缓存;FastCGI_Cache主要用于对FastCGI的动态程序进行缓存

6.假定CSomething是一个类,执行下面这些语句之后,内存里创建了____个CSomething对象.

CSomething a(); CSomething b(2); CSomething c[3]; CSomething &ra = b; CSomething d=b; CSomething *pA = c; CSomething *p = new CSomething(4);

A.10 B. 9 C.8 D.7 E.6 F.5

如果你想知道答案或者你知道答案,请留言或者关注下方公众号,并且回复1031,将会得到答案和解析哟。

如果你觉得我写的还行,请关注我的博客并且点个赞哟,也请关注我的公众号并加入下方QQ群,每天都会定时推送干货以及共享一些优质的学习资料和视频哟.

最新回复(0)