一、nginx入门
Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器
1、什么是反向代理
(1)正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求
(2)反向代理隐藏了真实的服务端,当我们请求 www.baidu.com 的时候,就像拨打10086一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,
你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。
(3)Nginx就是性能非常好的反向代理服务器,用来做负载均衡。
(4)两者的区别在于代理的对象不一样:正向代理代理的对象是客户端,反向代理代理的对象是服务端
(5)“反向代理方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。”
2、Nginx常用功能
(1)http服务器:可以做网页静态服务器,将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端
(2)反向代理服务器:端口转发
什么是反向代理?
客户端本来可以直接通过HTTP协议访问某网站应用服务器,网站管理员可以在中间加上一个Nginx,客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。负载均衡、虚拟主机等,都是基于反向代理实现
(3)负载均衡:当网站的访问量达到一定程度后, 单台服务器不能满足用户的请求时, 需要用多台服务器集群可以使用 nginx 做反向代理。 并且多台服务器可以平均分担负载, 不会因为某台服务器负载高宕机而某台服务器闲置的情况。
Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空
Ip hash算法,对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
(4)web缓存
Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理。
(5)虚拟主机
有的网站访问量大,需要负载均衡。然而并不是所有网站都如此出色,有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。例如将www.jim.com和www.tim.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。
在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。
虚拟主机的原理是通过HTTP请求头中的Host是否匹配server_name来实现的
3.Nginx 反向代理为什么可以提高网站性能
Nginx 有个好处是它会把 Request 在读取完整之前 buffer 住,
这样交给后端的就是一个完整的 HTTP 请求, 从而提高后端的效率, 而不是断断续续的传递
(互联网上连接速度一般比较慢) 。 同样, Nginx 也可以把 response 给 buffer 住, 同
样也是减轻后端的压力