一键脚本
bash <(curl -sL kejilion.sh) fd
批量反代
bash <(curl -sL kejilion.sh) fd [你的域名] [目标IP] [目标端口]
bash <(curl -sL kejilion.sh) fd web1.example.com 123.123.123.123 8080
bash <(curl -sL kejilion.sh) fd web2.example.com 123.123.123.123 8060
如果需要根域重定向到www,先执行上面的批量反代命令,然后再执行重定向菜单
负载均衡
轮询方式
server 3.3.3.3:80 max_fails=3 fail_timeout=30s;
server 6.6.6.6:80 max_fails=3 fail_timeout=30s;
加权轮询
server 192.168.1.10 weight=2 max_fails=3 fail_timeout=30s;
server 192.168.1.11 weight=1 max_fails=3 fail_timeout=30s;
原版方式
hash $remote_addr consistent;
server 3.3.3.3:80;
server 6.6.6.6:80;
续签
原脚本存在防火墙不太安全的原因,所以改动了一下
备份旧脚本(推荐)
cp /root/auto_cert_renewal.sh /root/auto_cert_renewal.sh.backup
下载新脚本覆盖
wget -O /root/auto_cert_renewal.sh https://raw.githubusercontent.com/woniu336/open_shell/main/bt/auto_cert_renewal.sh
设置执行权限
chmod +x /root/auto_cert_renewal.sh
查看文件确认
cat /root/auto_cert_renewal.sh
测试运行(可选,先不实际续签,只检查)
bash /root/auto_cert_renewal.sh
注意事项:
如果要开放80端口,查看iptables规则
sudo iptables -L INPUT -n --line-numbers | grep 80
然后删除规则,假设前面的序号是3和2
sudo iptables -D INPUT 3
sudo iptables -D INPUT 2
注意:
- 要 先删除行号大的(3),再删小的(2),否则删除后行号会变动。
- 删除顺序错误会导致
No such rule错误。
管理已有配置
k web
重启生效
docker exec nginx nginx -s reload
查看容器运行状态
docker ps -a | grep nginx
测试配置
docker exec nginx nginx -t
查询Nginx缓存大小
docker exec nginx du -sh /var/cache/nginx/
查询缓存文件数量
docker exec nginx find /var/cache/nginx -type f | wc -l 2>/dev/null
rsync的定时任务需要改成
(crontab -l ; echo "30 0 * * * /bin/bash -l -c 'k rsync_run 1' >> /var/log/rsync_daily.log 2>&1") | crontab -
远程服务器需要安装rsync
sudo apt-get update
sudo apt-get install rsync
转换成nginx(非docker)
# 为 proxy 缓存创建目录并设置权限
sudo mkdir -p /var/cache/nginx/proxy
sudo chown -R nginx:nginx /var/cache/nginx
清理系统缓存
# 清理页面缓存
echo 1 > /proc/sys/vm/drop_caches
微调整缓存策略
# 增加缓存压力,让系统更积极地回收缓存
echo 'vm.vfs_cache_pressure = 150' >> /etc/sysctl.conf
# 保持当前的swappiness设置(已经很好了)
echo 'vm.swappiness = 10' >> /etc/sysctl.conf
# 使设置生效
sysctl -p
监控脚本
# 创建监控脚本
cat > /usr/local/bin/memory_monitor.sh << 'EOF'
#!/bin/bash
MEMORY_USAGE=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100}')
if [ $MEMORY_USAGE -gt 80 ]; then
echo "Memory usage is ${MEMORY_USAGE}%, clearing cache..."
echo 1 > /proc/sys/vm/drop_caches
logger "Memory cache cleared due to high usage: ${MEMORY_USAGE}%"
fi
EOF
chmod +x /usr/local/bin/memory_monitor.sh
# 设置每5分钟检查一次
echo "*/5 * * * * /usr/local/bin/memory_monitor.sh" | crontab -
一行命令快速查看内存占用最高的进程
ps aux | sort -k4 -nr | head -10
查看缓存大小
du -sh /var/cache/nginx/proxy/
清空现有缓存
sudo rm -rf /var/cache/nginx/proxy/*
重启nginx
sudo nginx -t && sudo systemctl restart nginx
nginx配置
https://github.com/woniu336/cf-cdn-s/blob/main/oth/nginx.conf
站点配置
https://github.com/woniu336/cf-cdn-s/blob/main/oth/conf.d/www.2345.cc.conf
备份
curl -sS -O https://raw.githubusercontent.com/woniu336/cf-cdn-s/main/backup-nginx-ssl.sh &&chmod +x backup-nginx-ssl.sh && ./backup-nginx-ssl.sh