【NGINX入门】3.Nginx的缓存服务器proxy_cache配置
本文介绍NGINX缓存机制,配置和参数说明。
如图所示,nginx缓存,可以在一定程度上,减少源服务器的处理请求压力。因为静态文件(比如css,js, )中,很多都是不经常更新的。nginx使用proxy_cache将用户的请求缓存到本地一个目录。下一个相同请求可以直接调取缓存文件,就不用去请求服务器了。毕竟,IO密集型服务的处理是nginx的强项。
Nginx的缓存加速功能是由proxy_cache(用于反向代理和静态缓存)和fastcgi_cache(PHP动态缓存)两个功能模块完成。
Nginx缓存特点:
先上个例子:
因为我是在一台服务器上做试验,所以用了两个端口 80 和 90 进行模拟两台服务器之间的交互。
接下来讲一下配置项:
这里我设置了 、 css 、 js 静态资源进行缓存。
当用户输入 http://wangxiaokaivip 域名时,解析得到 ip:port 的访问地址。 port 默认为80。所以页面请求会被当前server截取到,进行请求处理。
当解析到上述文件名结尾的静态资源,会到缓存区获取静态资源。
如果获取到对应资源,则直接返回数据。
如果获取不到,则将请求转发给 proxy_pass 指向的地址进行处理。
这里直接处理 90 端口接受到的请求,到服务器本地目录 /mnt/blog 下抓取资源进行响应。
细心的读者应该发现,我在第二段例子里,留了个彩蛋 add_header wall "hey!guys!give me a star" 。
add_header 是用于在报头设置自定义的信息。
所以,如果缓存有效的话,那么静态资源返回的报头,一定会带上这个信息。
(1)Nginx系列教程(3)nginx缓存服务器上的静态文件
https://yqaliyuncom/articles/752967
(2)proxy_cache
nginx 反向代理之 proxy_cache https://wwwcnblogscom/yyxianren/p/10832172html
(3)Nginx使用upstream负载均衡和proxy_cache缓存实现反向代理
https://blog51ctocom/13770206/2163952
Nginx在不依赖第三方模块的前期下,主要的功能有:
①、正向代理
正向代理,是在用户端的。比如需要访问某些国外网站,我们可能需要购买***。并且***是在我们的用户浏览器端设置的(并不是在远端的服务器设置),浏览器先访问***地址,***地址转发请求,并最后将请求结果原路返回来。
②、反向代理
客户端向服务器发送请求时,会首先经过Nginx服务器,由服务器将请求分发到相应的WEB服务器。正向代理是代理客户端,而反向代理则是代理服务器,Nginx在提供反向代理服务方面,通过使用正则表达式进行相关配置,采取不同的转发策略,配置相当灵活,而且在配置后端转发请求时,完全不用关心网络环境如何,可以指定任意的IP地址和端口号,或其他类型的连接、请求等。
③、负载均衡
当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况
④、动静分离
在Web开发中,通常来说,动态资源其实就是指那些后台资源,而静态资源就是指HTML,JavaScript,CSS,img等文件。
一般来说,都需要将动态资源和静态资源分开,将静态资源部署在Nginx上,当一个请求来的时候,如果是静态资源的请求,就直接到nginx配置的静态资源目录下面获取资源,如果是动态资源的请求,nginx利用反向代理的原理,把请求转发给后台应用去处理,从而实现动静分离。
在使用前后端分离之后,可以很大程度的提升静态资源的访问速度,同时在开过程中也可以让前后端开发并行可以有效的提高开发时间,也可以有些的减少联调时间。
Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。
1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。
6、缓存控制字段cache-control的配置说明 ( https://wwwcnblogscom/kevingrace/p/10459429html )
HTTP协议的Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Control并不会影响另一个消息处理过程中的缓存处理过程。
请求时的缓存指令包括: no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached等。
响应消息中的指令包括: public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age。
no-cache: 数据内容不能被缓存, 每次请求都重新访问服务器, 若有max-age, 则缓存期间不访问服务器
no-store: 不仅不能缓存, 连暂存也不可以(即: 临时文件夹中不能暂存该资源)
private(默认): 只能在浏览器中缓存, 只有在第一次请求的时候才访问服务器, 若有max-age, 则缓存期间不访问服务器
public: 可以被任何缓存区缓存, 如: 浏览器、服务器、代理服务器等
max-age: 相对过期时间, 即以秒为单位的缓存时间
no-cache, private: 打开新窗口时候重新访问服务器, 若设置max-age, 则缓存期间不访问服务器
设置以分钟为单位的绝对过期时间, 优先级比Cache-Control低, 同时设置Expires和Cache-Control则后者生效 也就是说要注意一点: Cache-Control的优先级高于Expires
expires起到控制页面缓存的作用,合理配置expires可以减少很多服务器的请求, expires的配置可以在http段中或者server段中或者location段中 比如控制等过期时间为30天
客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。
"它代理的是客户端,代客户端发出请求",是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
正向代理的用途:
(1)访问原来无法访问的资源,如Google
(2) 可以做缓存,加速访问资源
(3)对客户端访问授权,上网进行认证
(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
多个客户端给服务器发送的请求,Nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,Nginx扮演的就是一个反向代理角色。
客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。
反向代理,"它代理的是服务端,代服务端接收请求",主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。
反向代理的作用:
(1)保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
(2)负载均衡,通过反向代理服务器来优化网站的负载
如何实现Nginx的反向代理?
这句话什么意思?
意思是说当客户机来访问服务器的时候,服务器本身并不出面接待,而是将客户的请求转高给手下的子服务器(小弟)负责接待。
比如:你访问wwwbaiducom,其实并不时百度总服务器接待的你,而是百度的代理服务器接待的你,不过他们的服务是一样的,提供同样的页面;
如是搭建Nginx服务才能实现这样的效果呢?
搭建一个最简单,最基础nginx代理服务器,需要一台代理服务,两台子服务器,XX台客户机来作验证;
操作流程如下:
第一步、服务器和客户机配好IP地址,其中Nginx代理服务器需要配置两张网卡,两个IP地址,一个和客户机通信,一个和子服务器通信;
代理服务器与客户机和子服务器都分别配置同网段IP地址;
例如:
代理服务器:19216845 19216825
子服务器 :1921682100 1921682200
客户机 :192168410
这样配置的好处是: 可以负载均衡,保障用户的访问体验,保障上网速度,同时也保障了,即便有一台服务器坏掉了,另一台服务可以接待用户访问;
第二步、代理服务器上安装Nginx服务软件,两台子服务器上安装HTTPD服务并写入相应的网页,然后启动服务;
yum -y install httpd ##安装httpd服务;
echo "罗贵" > /var/www/html/indexhtml ##写一个简单的网页
/configure --user=nginx --group=nginx --with-http_ssl_module
make && make install ##编译安装Nginx
第三步、修改Nginx的配置文件;
vim /usr /local /nginx /conf /nginxconf
http { ##在文件中找到http开头的行,并在http下面随意找两行添加下面两行的内容;
upstream luogui { ##luogui是集群名字,可以自由定义,upstream 上游的意思;翻译过来就是在上游建立一个名字为luogui的集群,集群中包含下述IP地址;
server 1921682100:80;
server 1921682200:80;
}
server {
listen 80;
server_name wwwluoguicom; ##域名,可以自由定义;
location ^/php$ { ##匹配网页地址的意思,匹配以 / 开头php结尾的网页文件;
proxy_pass http://luogui; ##通过proxy代理服务器将用户的请求转发给luogui集群服务器;(注:优先级最高,系统会优先处理这条命令)
}
}
第四步、测试效果;
firefox http://19216845 或者 本地测试 curl http://19216845
结果应该是暂停任何一台子服务器,客户机访问网页都没有问题;
以上
(EDN)
祝:开心!
罗贵
2019-04-05于深圳
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Ramblerru站点(俄文:Рамблер)开发的,第一个公开版本010发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 104发布。
反向代理的优势:
1、加快了对内部服务器的访问速度
在内部服务器前放置两台反向代理服务器,分别连接到教育网和公网,这样公网用户就可以直接通过公网线路访问学校服务器,从而避开了公网和教育网之间拥挤的链路。同时反向代理服务器的缓存功能也加快了用户的访问速度。
2、节约了有限的IP资源
校园网内部服务器除使用教育网地址外,也会采用公网的IP地址对外提供服务,公网分配的IP地址数目是有限的,如果每个服务器有分配-个公网地址,那是不可能的,通过反向代理技术很好地解决了IP地址不足的问题。
Nginx是一个高性能的Web和反向代理服务器,它具有有很多非常优越的特性:
作为负载均衡服务器 :Nginx既可以在内部直接支持Rails和PHP,也可以支持作为HTTP代
理服务器对外进行服务。Nginx用C编写,不论是系统资源开销还是CPU使用效率都比
Perlbal要好的多。
作为邮件代理服务器 :Nginx同时也是-一个非常优秀的邮件代理服务器(最早开发这个产品的目的之-也是作为邮件代理服务器),Lastfm 描述了成功并且美妙的使用经验。
Nginx安装非常的简单,配置文件非常简洁(还能够支持per语法),Bugs非 常少的服务器:
Nginx启动特别容易,并且几乎可以做到724不间断运行,即使运行数个月也不需要重新启
动。你还能够在不间断服务的情况下进行软件版本的升级。
处理静态文件,索引文件以及自动索引;
反向代理加速(无缓存), 简单的负载均衡和容错;
FastCGI,简单的负载均衡和容错;
模块化的结构。过滤器包括gzipping, byte ranges, chunked responses,以及SSiI-ilter 。
在SSI过滤器中,到同一个proxy或者FastCGI的多个子请求并发处理;
SSL和TLSSNI支持;
使用外部HTTP认证服务器重定向用户到IMAP/POP3后端;
使用外部HTTP认证服务器认证用户后连接重定向到内部的SMTP后端;
认证方法:
POP3: POP3 USER/PASS, APOP, AUTH LOGIN PL AIN CRAM-MD5;
IMAP: IMAP LOGIN;
SMTP: AUTH LOGIN PLAIN CRAM-MD5;
SSL支持;
在IMAP和POP3模式下的STARTTLS和STLS支持;
FreeBSD 3x, 4x, 5x, 6x i386; FreeBSD 5x, 6x amd64;
Linux22, 24, 26 i386; Linux 26 amd64;
Solaris 8 i386; Solaris 9 i386 and sun4u; Solaris 10 i386;
MacOS X (104) PPC;
一个主进程和多个工作进程。工作进程是单线程的,且不需要特殊授权即可运行;
kqueue (FreeBSD 41+), epoll (Linux 26+), t signals (Linux 2219+), /dev/poll (Solaris711/99+), select,以及poll支持;
kqueue支持的不同功能包括EV_ _CLEAR, EV_ DISABLE (临时禁止事件),NOTE_ _LOWAT, EV_ EOF, 有效数据的数目,错误代码;
sendfile (FreeBSD 31+), sendfile (Linux 22+), sendfile64 (Linux 2421+),和sendfilev(Solaris 8 7/01+)支持;
输入过滤(FreeBSD 41+)以及TCP_ _DEFER_ ACCEPT (Linux24+)支持;
10,000 非活动的HTTP keep-alive连接仅需要25M内存。
最小化的数据拷贝操作;
基于IP和名称的虚拟主机服务;
Memcached的GET接口;
支持keep-alive和管道连接;
灵活简单的配置;
重新配置和在线升级而无须中断客户的工作进程;
可定制的访问日志,日志写入缓存,以及快捷的日志回卷;
4xx-5xx错误代码重定向;
基于PCRE的rewrite重写模块;
基于客户端IP地址和HTTP基本认证的访问控制;
PUT, DELETE,和MKCOL方法;
支持FLV (Flash视频) ;
带宽限制;
内嵌的perl
通过aio read() 1 aio _write() 的套接字工作的实验模块,仅在FreeBSD下。
对线程的实验化支持,FreeBSD 4x的实现基于rfork()
Nginx主要的英语站点是htp://sysoevru/en/
本人有自己整理大数据学习的功课,闲置着也无用了。
获取方式:
私信方式:
第一步,点击头像。
第二部:头像旁边有一个私信按钮,发送{学习资料}即可!
是个服务器,主要是php常用到的服务器。
Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Ramblerru 站点开发的,第一个公开版本010发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 104发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、新浪、网易、腾讯等。
优点是可以在大多数 Unix like OS 上编译运行,并有 Windows 移植版。 Nginx 的140稳定版已经于2013年4月24日发布,一般情况下,对于新建站点,建议使用最新稳定版作为生产版本,已有站点的升级急迫性不高。Nginx 的源代码使用 2-clause BSD-like license。
Nginx 是一个很强大的高性能Web和反向代理服务器,它具有很多非常优越的特性:
在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000 个并发连接数的响应,感谢Nginx为我们选择了 epoll and kqueue作为开发模型
Nginx是lgor Sysoev为俄罗斯访问量第二的ramblerru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。
Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。
Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有1218%的使用比率,大约为2220万个网站。
1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。
Nginx常用功能。
1、Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。
Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案。
。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。
2、负载均衡
Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。
0条评论