Brotli
安装
● 官网
● https://github.com/google/ngx_brotli
● https://codeload.github.com/google/brotli/tar.gz/refs/tags/v1.0.9
● 下载 两个项目
● 解压缩
模块化编译
./configure --with-compat --add-dynamic-module=/root/ngx_brotli-1.0.0rc --prefix=/usr/local/nginx/
或
--add-dynamic-module=brotli目录
● make
● 将 ngx_http_brotli_filter_module.so ngx_http_brotli_static_module.so 拷贝到 /usr/local/nginx/modules/
● 复制nginx主程序
● 配置文件中添加
load_module "/usr/local/nginx/modules/ngx_http_brotli_filter_module.so";
load_module "/usr/local/nginx/modules/ngx_http_brotli_static_module.so";
brotli on;
brotli_static on;
brotli_comp_level 6;
brotli_buffers 16 8k;
brotli_min_length 20;
brotli_types text/plain text/css text/javascript application/javascript text/xml application/xml application/xml+r
测试
默认http协议是没有br的
curl -H 'Accept-Encoding: gzip' -I http://localhost
合并客户端请求
Concat模块
Tengine
Nginx官方介绍
https://www.nginx.com/resources/wiki/modules/concat/
git地址
https://github.com/alibaba/nginx-http-concat
● 安装
下载源码解压缩编译安装
● 配置
concat on;
concat_max_files 30;
资源静态化
•高并发系统资源静态化方案
•一致性问题
•合并文件输出
•集群文件同步
SSI合并服务器端文件
官方文档
http://nginx.org/en/docs/http/ngx_http_ssi_module.html
配置
ssi_min_file_chunk
向磁盘存储并使用sendfile发送,文件大小最小值
ssi_last_modified
是否保留lastmodified
ssi_silent_errors
不显示逻辑错误
ssi_value_length
限制脚本参数最大长度
ssi_types
默认text/html;如果需要其他mime类型 需要设置
include file
<!--# include file="footer.html" -->
静态文件直接引用
include virtual
可以指向location,而不一定是具体文件
include wait
阻塞请求
include set
在virtual基础上设置变量
set
设置临时变量
block
可以声明一个ssi的命令块,里面可以包裹其他命令
config errmsg
在模板中配置报错情况
config timefmt
日期格式化
echo
直接输出变量
● var变量名称
● encoding 是否使用特殊编码格式
● default 变量没有值的时候使用默认值
if
逻辑判断
rsync
https://www.samba.org/ftp/rsync/rsync.html
remote synchronize是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机之间的文件。也可以使用 rsync 同步本地硬
盘中的不同目录。 rsync 是用于替代 rcp 的一个工具,rsync 使用所谓的 rsync算法 进行数据同步,这种算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。
rsync 基于inotify 开发
Rsync有三种模式:
● 本地模式(类似于cp命令)
● 远程模式(类似于scp命令)
● 守护进程(socket进程:是rsync的重要功能)
rsync 常用选项
安装
两端安装
yum install -y rsync
密码文件
创建文件 /etc/rsync.password
内容
hello:123
修改权限
chmod 600 /etc/rsync.password
修改配置
auth users = sgg
secrets file = /etc/rsyncd.pwd
开机启动
在 /etc/rc.local 文件中添加
rsync --daemon
● 修改权限
echo "sgg:111" >> /etc/rsyncd.passwd
查看远程目录
rsync --list-only 192.168.44.104::www/
拉取数据到指定目录
rsync -avz rsync://192.168.44.104:873/www
rsync -avz 192.168.44.104::www/ /root/w
使用SSH方式
rsync -avzP /usr/local/nginx/html/ root@192.168.44.105:/www/
客户端免密
客户端只放密码
echo "111" >> /etc/rsyncd.passwd
此时在客户端已经可以配合脚本实现定时同步了
如何实现推送?
修改配置
rsync -avz --password-file=/etc/rsyncd.passwd.client /usr/local/nginx/html/ rsync://sgg@192.168.44.105:/www
--delete 删除目标目录比源目录多余文件
实时推送
推送端安装inotify
依赖
yum install -y automake
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
./configure --prefix=/usr/local/inotify
make && make install
监控目录
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %w%f %e' -e close_write,modify,delete,create,attrib,move //usr/local/nginx/html/
简单自动化脚本
#!/bin/bash
/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f %e' -e close_write,modify,delete,create,attrib,move //usr/local/nginx/html/ | while read file
do
rsync -az --delete --password-file=/etc/rsyncd.passwd.client /usr/local/nginx/html/ sgg@192.168.44.102::ftp/
done