Hugo博客公告弹窗

nginx一键反代

一键脚本

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;

查看占用

netstat -an | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20

测试权重分配(3:1)

for i in {1..20}; do curl -w "Time: %{time_total}s\n" -so /dev/null "https://www.xxxx.cc/?t=$RANDOM"; done

服务器测试,决定怎么分配权重

for i in {1..10}; do
  curl -w "Server1: %{time_total}s\n" -so /dev/null http://3.3.3.3
  curl -w "Server2: %{time_total}s\n" -so /dev/null http://6.6.6.6
done

日志分析

curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/n-log.sh && chmod +x n-log.sh && ./n-log.sh

清理日志

curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/clean_nginx_logs.sh && chmod +x clean_nginx_logs.sh && ./clean_nginx_logs.sh

定时任务:

(crontab -l 2>/dev/null; echo "0 3 * * * /root/clean_nginx_logs.sh >/dev/null 2>&1") | crontab -

续签

原脚本存在防火墙不太安全的原因,所以改动了一下

备份旧脚本(推荐)

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
CC BY-NC-SA 4.0 转载请注明
最后更新于 2025-12-06 03:08