nginx动静分离内存cache文件同步.docx
《nginx动静分离内存cache文件同步.docx》由会员分享,可在线阅读,更多相关《nginx动静分离内存cache文件同步.docx(12页珍藏版)》请在冰豆网上搜索。
nginx动静分离内存cache文件同步
基于nginx的网址动静分离,缓存及同步文档说明
1动静分离
Nginx的动静分离原理是根据request的url匹配,反向代理到不同的后端服务器(目录).
1.1配置文件附件
1.2配置文件解析
Location:
可以理解为针对某一url的配置.
Location可以对url进行正则表达式匹配,以方便对某一大类的url进行处理.
此配置是针对根目录跳转不正常而设置.
“/”:
根目录,由于某些后端服务器的根目录不是默认目录,直接访问代理服务器的根目录会跳转到后端服务器的原始默认根目录,这种情况下需要配置根目录的访问.
第67行:
代理跳转,将根目录请求发给后端,以获得真实根目录的内容.
此配置是将静态文件请求代理到本地或者其他服务器的配置.
第76行:
正则表达式意思为,匹配后缀名为图所示的url.
第78行:
设置当前url进行访问的文件根目录,nginx将会对这些url的根目录设置为配置所示.
第83行:
文件存放时间.
这是动静分离的主要配置点,此配置将静态文件请求截获,并改为访问nginx的某一个目录,这将大大减轻后端服务器的压力.
此配置是将动态网页代理到后端的配置.
第87行:
正则表达式匹配动态网页的后缀.
第89行:
反向代理到后端.
2静态文件的cahce设置
将静态文件读入到内存中,节省文件打开时间,此配置将会用到memcached开软程序,memc和srcache两个nginx三方module.
2.1nginx配置文件附件
见1.1的附件
2.2三方程序的安装
2.2.1安装:
libevent
这个库是memcached依赖库.
下载地址:
http:
//www.monkey.org/~provos/libevent/
配置指令:
./configure--prefix=/usr/local/libevent
编译指令:
make&&makeinstall
2.2.2安装:
memcached
第一种方式:
下载地址:
第二种方式:
指令:
wgethttp:
//memcached.org/latest
解压缩指令:
tar-zxvfmemcached-1.4.5.tar.gz
配置指令:
./configure--prefix=/usr/local/memcache--with-libevent=/usr/local/libevent/
编译指令:
make&& makeinstall
2.2.3安装memc-nginx-module
获取源代码:
gitclone
加入nginx配置指令:
nginx的configure中加入:
--add-module=绝对路径/memc-nginx-module
2.2.4安装HttpSRCacheModule
获取源代码:
gitclone
加入nginx配置指令:
nginx的configure中加入:
--add-module=模块目录绝对路径/srcache-nginx-module
2.2.5memcached启动服务
启动指令:
memcached-d-m10 -uroot-l192.168.40.4-p12000-c256-P/tmp/memcached.pid (完整启动)
参数说明:
-d选项是启动一个守护进程
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB
-u是运行Memcache的用户,我这里是root
-l是监听的服务器IP地址
-p是设置Memcache监听的端口,最好是1024以上的端口
-c选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定
-P是设置保存Memcache的pid文件
-vv调试模式
2.3配置文件解析
此配置是为了和memcached建立联系.
44行:
memcached的ip地址和端口号.
45行:
tcp为长连接,1.53版本后默认加入keepalive功能,此前的版本请另外下载补丁,地址:
此配置为了在http头部显示内存命中情况.
59行:
显示从内存中读取的状态,分为“HIT”,“MISS”,“BYPASS”.
60行:
显示未命中时储存情况分为”STORE”,“BYPASS”.
注释此配置是因为sendfile可能使用AIO,会打断memc模块的连接.
此配置设置了存入memcached的key-value值.
79行:
设置url为key值,以此作为操作值.
80行:
设置get的行为,如果get操作,将会以此url在/memc中查找,有的话,会从memc中读取,没有的话,转交给nginx处理.并把这次请求形成一个key-value放入memc.
81行:
设置对于put行为的操作,动作和get类似.
82行:
对http响应的状态的设置,只有状态在设置中才会触发上面两个操作.
此配置为memcached的反向代理配置.除了超时控制,基本不用改动.
3文件同步
综述:
由于动静分离后文件不在一台服务器上, 可能后台更新后静态文件服务器并没有这个文件,从而导致某些页面不正常或者404,现在需要文件同步服务器,时刻保持文件的一致性.此方案需要三方开源程序rsync(windows版可能需要付费).吃程序可以方便的同步多台设备间文件,并且保持目录,权限的同时复制.
3.1配置文件附件
Linux版:
windows版
3.2安装程序
3.21Linux版
多个发行版都自带此程序,可以用whereis指令查询位置.
如果没有可以:
1)使用发行版自带软件仓库安装
2)官网下载源码,地址https:
//rsync.samba.org/ftp/rsync/
安装方法类似memcached,tar指令解压,configure配置安装路径,make进行编译.可以照着memcached进行操作.例如下面所示.
#tarzxvfrsync-2.6.9.tar.gz
#cdrsync-2.6.9
#./configure--prefix=/usr/local/rsync
#make
#makeinstall
3.2.2Windows版
Window版请下载cwsyncServer程序,可能付费,具体请搜索下载.
安装按照标准windows程序安装到某一路径下.
3.3配置说明
3.3.1linux版配置
1)配置文件位置:
/etc/rsyncd.conf,需要手动建立,默认不存在.
此文件的权限最好为600,否则可能运行有问题,改权限指令:
chmod/etc/rsyncd.conf600(root权限运行).
2)密码文件配置:
可在任意路径下建立文件,权限为600(最好专门建立路径,保存日志,密码,欢迎信息等文件),路径必须写入配置文件
密码文件内容:
用户名:
密码例如root/111111
此用户名和密码是客户端设置的用户名和密码(权限600).
3)开启配置文件中设置的端口号.
4)任意路径建立欢迎信息文件,内容为客户端连接上时的显示信息路径必须写入配置文件.
5)启动指令:
rsync–daemon
3.3.2windows版配置.
1)请在安装根目录下修改默认生成的rsyncd.conf,直接复制其他配置文件到根目录下可能会因为权限问题导致相关windows服务无法启动.
2)密码文件配置:
可在任意路径下建立文件,权限为操作者所有.
密码文件内容:
用户名:
密码例如:
root/111111
3)开启配置文件中所设置的端口号.
4)任意路径建立欢迎信息文件,内容为客户端连接上时的显示信息路径必须写入配置文件.
5)启动:
在windows服务管理中找到rsyncsever并开启.
如图所示.
3.4配置分析
1行:
设置运行RSYNC守护进程的用户
2行:
设置运行RSYNC守护进程的组
3行:
不行用chroot
4行:
最大连接数.
5行:
是否检查口令文件的权限
6行:
运行的IP地址
7行:
运行的端口号
9行:
日志格式
11行:
运行时记录pid的文件的位置.
12行:
运行时锁文件位置.
13行:
运行时日志文件的位置.
14行:
欢迎信息文件位置.
18行:
这里是认证的模块名,在client端需要指定.一个配置文件允许有多个模块,每个模块可以单独配置需要备份的路径,权限等.
19行:
备份路径,不同模块可以不同.
20行:
这个模块的注释信息
21行:
可以忽略一些无关的IO错误
22行:
只读,不允许对备份的目录做其他操作
23行:
不允许客户端使用list指令列出所有文件
24行:
认证的用户名,如果没有这行则表明是匿名,此用户与系统无关
25行:
密码和用户名对比表,密码文件是自己生成的
26行:
允许主机的ip
27行:
禁止访问的ip
28行:
不需要备份的目录
Windows版配置文件区别
路径写法c:
\work变为/cygdrive/c/work
3.5客户端的配置
1)在任意路径建立密码文件
内容格式用户名:
密码
用户名和密码和服务器匹配才能连接
2)启动指令:
rsync-vzrtopg--progress--delete hening@192.168.0.217:
:
backup /home/backup--password-file=/etc/rsync.pas
参数解释:
-v表示verbose详细显示
-z表示压缩
-r表示recursive递归
-t表示保持原文件创建时间
-o表示保持原文件属主
-p表示保持原文件的参数
-g表示保持原文件的所属组
-a存档模式
-P表示代替-partial和-progress两者的选项功能
-essh建立起加密的连接。
--partial阻止rsync在传输中断时删除已拷贝的部分(如果在拷贝文件的过程中,传输被中断,rsync的默认操作是撤消前操作,即从目标机上
删除已拷贝的部分文件。
)
--progress是指显示出详细的进度情况
--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。
--exclude不包含/ins目录
--size-only这个参数用在两个文件夹中的差别仅是源文件夹中有一些新文件,不存在重名且被修改过的文件,因为这种文件有可能会因为内容被修改可大小一样,而被略过。
这个参数可以大大地提高同步的效率,因为它不需要检查同名文件的内容是否相同。
--password-file来指定密码文件,内容包含server端指定认证用户的密码。
这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。
hening@192.168.0.217:
:
backup
hening是指server端指定认证的用户
192.168.0.217是指服务器端的ip
:
:
backup表示服务器端需要同步的模块名称;
/home/quack/backup/$DATE是同步后的文件指存放在本机的目录地址。
/var/log/rsync.$DATE是同步后的日志文件存放在本机的目录地址。
3)客户端启动后将自动同步所有设置好的文件.
结果示例