yum 源管理命令
Ansible 使用总结
Ansible 使用总结
Ansible 实用代码总结
Ansible 实用代码总结
Ansible 目录、文件操作
Ansible 目录、文件操作
npm使用记录
npm使用记录
ddrk之字幕处理
在将 m3u8
、ts
等文件下载完毕后,通过以下命令转换成 mp4
格式视频。
1 | $ ffmpeg -allowed_extensions ALL -protocol_whitelist "file,https,tls,http,crypto,tcp" -i ./index.m3u8_backup -c copy ~/Downloads/神奇女侠1984.mp4 |
但播放 mp4
视频时,发现没有对应中文字幕。但源网站是有的,说明字幕是单独加载的,未添加到视频流中。
PHP 字符串压缩与node zlib、pako
探索 PHP 字符串压缩,与 node 中 zlib、pako 库压缩、解压缩处理。
- DEFLATE,是一种使用 Lempel-Ziv 压缩算法(LZ77)和哈夫曼编码的压缩格式。详见 RFC 1951;
- ZLIB,是一种使用 DEFLATE 的压缩格式,对应 HTTP 中的 Content-Encoding: deflate。详见 RFC 1950;
- GZIP,也是一种使用 DEFLATE 的压缩格式,对应 HTTP 中的 Content-Encoding: gzip。详见 RFC 1952;
Content-Encoding 中的 deflate,实际上是 ZLIB。ZLIB 和 GZIP 都是 RAW DEFLATE 的不同 Wrapper。
PHP 字符串压缩函数
gzcompress
,对应解压缩函数:gzuncompress
,使用raw ZLIB
数据格式。gzdeflate
,对应解压缩函数:gzinflate
,使用raw DEFLATE
数据格式。gzencode
,对应解压缩函数:gzdecode
,压缩成gzip
编码数据。bzcompress
,对应解压缩函数:bzdecompress
,压缩成bzip2
编码数据。
1 | echo base64_encode(gzdeflate('1234')); |
pako
1 | npm install pako@1.0.6 |
1 | const pako = require('pako'); |
zlib
1 | const zlib = require('zlib'); |
参考
web安全之隐藏 nginx、php 版本号
web 服务的版本号对于恶意的攻击者无疑是有帮助的,因为不同版本号或多或少有其对应的漏洞,一旦被恶意的攻击者发现将对线上服务造成严重危害。而隐藏服务版本号则有助于提升 web 的安全性。
常用php-composer库汇总
nginx https优化
1 | # 不同 worker 绑定到不同核上,提高 CPU 缓存命中率,auto 根据 worker 数量自动绑定 CPU。 |
用于加密和解密TLS会话票据的密钥设置,生成 ticket 文件,必须含有80或48个字节的随机数据。
1 | openssl rand 80> ticket.key |
certbot 自动化脚本生成 Let’s Encrypt 免费证书。
1 | yum install python2-certbot-nginx |
域名
test.codezm.com
必须可访问。CA机构才能颁发证书。https://certbot.eff.org/docs/install.html
Tcp 优化
SYN_RCVD 状态
- SYN -
SYN_RECEIVED QUEUE
net.ipv4.tcp_max_syn_backlog=262144
接收SYN
最大数量,半链接个数。SYN
- 查看:
cat /proc/sys/net/ipv4/tcp_max_syn_backlog
- 查看:
net.ipv4.tcp_synack_retries
被动建立连接时,发送 SYN/ACK 的重试次数。SYN+ACK
- 查看:
cat /proc/sys/net/ipv4/tcp_synack_retries
- 查看:
ACCEPT
-ESTABLISHED QUEUE
net.core.somaxconn
系统级最大 backlog 队列长度。- nginx 端口限制 backlog 队列长度
listen 80 backlog=8192;
- 如何查看 Accept queue 溢出?
netstat -s | grep LISTEN
,返回SYNS to LISTEN sockets ignored
时。
防止 SYN
攻击,开启 net.ipv4.tcp_syncookies=1
,在 SYN 队列满时,启用 cookie。
一切皆文件:句柄数的上限
操作系统全局
fs.file-max 操作系统可使用的最大句柄数
1
sysctl -a | grep file-max
- fs.file-nr 查看当前已分配(正使用)、待重新分配、上限
限制用户
/etc/security/limits.conf
- root soft nofile 65535
- root hard nofile 65535
限制
root
用户,软、硬链接个数。hard
强制的、真实的链接,soft
软的限制,进程在运行时自动的修改软限制、但无法修改硬的,soft
一定要小于hard
。
* - noproc 11000
*
代表针对所有用户-
的意思为soft
和hard
全部限制。nofile 代表最大文件打开数
noproc 代表最大进程数
限制进程
Syntax: worker_rlimit_nofile number;
Default: -
Context: main
限制一个 worker 进程最大能打开的文件句柄数。
活动连接数查看
ss -n | grep ESTAB | wc -l
Tcp Fast Open - TFO
net.ipv4_tcp_fastopen
需 Client、Server 两端均支持 TFO。
- 0:关闭
- 1:作为客户端时可以使用TFO
- 2:作为服务端时可以使用TFO
- 3:无论作为客户端还是服务端,都可以使用TFO
Syntax: listen address[:port] [fastopen=number];
Default: listen *:80 | *:8000;
Context: server
fastopen=number
为防止带数据的 SYN 攻击,限制最大长度,指定 TFO 连接队列的最大长度。
worker 进程最大连接数量
包括 Nginx 与上游、下游间的连接。
Syntax: worker_connections numbers;
Default: worker_connections 512;
Context: events