东拉西扯

张戈博客正式启用全新个性域名:zhang.ge

Docker

Nexus3最佳实践系列:搭建Docker私有仓库

Docker

零门槛!基于Docker快速部署ES集群

网站建设

分享张戈博客的WordPress优化方案,缓解国内云服务器配置低下的问题

Docker

Docker新手入门实战教程

Docker

基于Docker部署ceph分布式文件系统(Luminous版本)

东拉西扯

浅谈个人博客网站or屌丝vps服务器暴露真实IP的危险性

WEB应用

APISIX插件开发之精细化限速插件

网站建设

如何正确配置CDN高速缓存,避免越用越慢的尴尬

WEB应用

APISIX插件开发之Kong网关HMAC鉴权插件(附客户端SDK)

WEB应用

APISIX运维优化之解决长尾请求(耗时抖动)问题

7月9日 · 2026年

Beggar:让 CodeBuddy 多 Agent 协作研发成本直降 90% 的开源套件

354 0
一套可复用的多 Agent 配置方案,通过模型差异化分工 + 双 Reviewer 交叉审查 + Review Gate 自动升级,在保证质量的前提下大幅降低 AI 编程成本。为什么需要 Beggar如果你正在用 CodeBuddy Code 做 AI 辅助开发,大概率遇到过这样的困境:成本焦虑:所有任务都用最强模型?太贵。都用便宜模型?质量没保障。单模型盲...
1月16日 · 2025年

FastTTS:支持私有化部署和源阅读无缝对接的语音合成服务

1298 0
概述长话短说,最近发现微软的语音服务莫名扣费了,然后看着国内云服务动辄几千上万的语音合成服务资源包,一阵苦涩。搜了下,发现挺多基于 edge-tts 的白嫖项目,试用了下确实能用,就是和源阅读对接的体验有待提高。因此决定自己封装一个更适合源阅读 APP 的语音合成服务,以下是介绍,有需要的直接拿。项目介绍本项目基于 Edge-TTS 和 FastFlyer 开发框...
8月17日 · 2022年

gRPC开发过程中遇到的问题记录

4213 4
最近我在改造手头负责的一个HTTP Restful API服务,集成对gRPC协议(在鹅厂叫tRPC,是gRPC的本土衍生版本)的支持。由于是从0学习这个协议,因此也踩了不少坑,这里用一篇文章来记录下,希望可以帮助到同样从0学习gRPC的朋友。列表参数赋值老的Rest接口中,大量用到了列表参数,看了下pb协议,给这个参数定义如下:message Foo { rep...
8月3日 · 2022年

SQLAlchemy因密码含有@符号连接MySQL失败

3685 0
最近新来的实习生小伙子在重构一个我入职时开发的老系统,这个系统之前用的是Python twisted框架开发的,这次重构希望可以换到FastAPI,也就是我上一篇文章分享的Flyer开发框架。小伙子很给力,花了几天自学了下FastAPI和Flyer就开始开发了,结果用Flyer框架的时候,连接MySQL报错如下:sqlalchemy.exc.OperationalError: (...
6月17日 · 2022年

Flyer:基于FastAPI的轻量级API开发框架

4432 0
概述我们经常会听到“不会开发的运维不是个好运维”,确实在运维工作当中,娴熟的开发经验能让运维工作如鱼得水,事半功倍!高级的运维除了需要精通Shell脚本编程之外,最好还需要掌握一门高级语言,比如Python、Golang、PHP、Lua等。高级语言除了可以解决一些更复杂的运维场景,还可以帮助我们更好的理解业务,做好业务运维,毕竟知己知彼才能百战不殆。经常看到很多运维同学写接口通常...
3月18日 · 2022年

APISIX高级路由之301/302跳转配置

4426 0
我们这有个内部网站同时支持2个域名访问,最近因升级需求希望统一到一个域名,即老域名做一个301跳转到新域名。这个在Nginx直接配置一个if逻辑,判断是老的host并跳转到新的域名即可。那这个Case在APISIX里面应该怎么配置呢?看了下APISIX文档,发现有两种跳转插件:redirect和response-rewrite,前者只能跳转uri不包含协议主机部分,后者可以通过修改返回头...
3月1日 · 2022年

解决paramiko使用invoke_shell交互式命令超时问题

6107 1
最近手头有个业务是基于Apache Karaf开发的,运行在K8S里面,跑了一堆的bundle,偶尔里面挂一两个bundle容器是没什么感知的,但是业务可能会局部异常。要推动业务优化的话,周期就会拉得很长,因此先弄个定时拨测来监控下bundle是不是都在正常运行的。看了下要查看Karaf里面的bundle需要ssh进去执行bundle list命令,因此基于之前的经验利用Python p...
2月25日 · 2022年

分享一个APISIX网关返回502的典型案例

3332 1
APISIX为了提高性能,默认会打开keepalived特性,预设会话保持时长为60s,我们在部署网关的时候也保留了这个优化特性,恰好我的上游服务基于Gunicorn+FastAPI开发框架,也开启了keepalived,会话保持默认设置为5s。这样就有问题了:网关和上游服务建立连接后60s内,新请求会继续复用这个连接,但是上游却在5s后主动关闭了连接,因为网关将新请求转发给上游时,才发现连接已经被关闭了,因此就出现了上述报错。...
12月23日 · 2021年

解决百度搜索出现安全中心提醒

2596 4
自从博客几乎断更之后,就已经很少关注SEO了。昨天机缘巧合在百度搜了下“zhang.ge”这个国外线路域名的时候,居然发现有如下提示:纳尼?还有这种事情?但是搜索“zhangge.net”却没有,看起来应该是误报。点击打开会有如下提示:看到有个“申请解封”按钮,就点过去,填写表单提交了下:结果,没等多久,大概之后个把小时就收到了百度发来的审核通过的...
7月13日 · 2017年

解决网站静态缓存后WP-PostViews插件不计数的问题

9416 30
突然发现文章浏览计数功能失效了,文章发了几个月才几十上百的浏览数,本以为是因为最近发的文章都比较冷门,不受欢迎。但是发布了几个月,才不到2百的访问量,这就不合理了。一、发现问题于是花时间分析了下,结果一查网站日志,发现浏览计数的请求居然一个都没有。。。由于网站开启了纯静态缓存(nginx_fastcgi_cache),所以wp-postviews的计数方式会自动改为ajax提交方式...
8月5日 · 2014年

VPS服务器备份网站到七牛云存储的shell脚本(第二版)

5903 14
上一篇文章发布了备份网站到七牛的第一版,这次应回复要求先公布同步原理及shell源码,让喜欢折腾的人有力可使。其实,这个备份工具的原理非常简单,就是借用了官方的同步工具,配合简单的shell语句即可完成。一、备份原理简介qrsync 是一个根据七牛云存储API实现的简易命令行辅助上传同步工具,支持断点续上传,增量同步,它可将用户本地的某目录的文件同步到七牛云存储中,同步或上传几百GB甚...
9月22日 · 2014年

http加速器Varnish的vcl配置小记(lnmp环境)

1587 2
在以前的公司曾安装过Varnish,可惜还没摸热就离职了,这次接着倒腾了下Varnish,并搭建成功,特来记录下,以备后用。一、测试环境系统版本:CentOS 6.4 x64WEB环境:Nginx+PHP+MySQLVarnish:3.0工作原理:简单的说,在本次测试中,Varnish将来自80的请求转发到后端的nginx8080端口,当匹配到请求是jpg、css、...
脚本编程阅读更多
8月17日 · 2022年

gRPC开发过程中遇到的问题记录

4213 4
最近我在改造手头负责的一个HTTP Restful API服务,集成对gRPC协议(在鹅厂叫tRPC,是gRPC的本土衍生版本)的支持。由于是从0学习这个协议,因此也踩了不少坑,这里用一篇文章来记录下,希望可以帮助到同样从0学习gRPC的朋友。列表参数赋值老的Rest接口中,大量用到了列表参数,看了下pb协议,给这个参数定义如下:message Foo { rep...
3月29日 · 2015年

SendCloud邮件队列状态和已使用额度的Python监控脚本

4435 2
公司最近用上了 SendCloud 的邮件代发服务,于是就有了各种监控需求。比如每天发信额度是不是要超标了或是邮件是否堵塞了等等。最近经常接触 python,所以这次也一样,继续学习使用 python 来完成各种脚本需求。SendCloud 提供了很多对外查询的 API,只要 Get 或 Post 传递用户名和 KEY 即可获得想要的各种数据,比如最简单的【已使用额度】就可以在用户...
6月19日 · 2014年

[不定期更新]简单的shell脚本练习实例

3265 24
此文将整理一些简单实用、有趣易学的shell练习脚本,希望可以帮到一些想学习shell的初学者。张戈也会在闲暇时间不定期更新此文,对已有实例进行改进和注释,增强可读性和易懂性。当然我也会不定期的添加更多简单、有趣且实用的shell练习脚本,帮助一些有需要的入门学习者。一、编写一个脚本使我们在写一个脚本时自动生成”#!/bin/bash”这一行和注释信息。原文代码为:#!/bin/bas...
8月31日 · 2014年

Linux/vps本地七天循环备份和七牛远程备份脚本

14997 45
博客前些时间分享过一次vps远程备份到七牛的工具,全傻瓜式交互操作,但也有一个很大的缺憾,那就是不够灵活,在无人干预的情况下,无法完成对多个站点的远程备份设置。这次博客搬家到vps后,张戈花了点时间完善了下,实现了多站点,多数据库的本地七天循环备份和同步备份至七牛云存储的脚本。一、类型说明①、七天循环备份受服务器空间制约,我们不可能在VPS上每天都备份一份新的网站数据,...
12月26日 · 2013年

Symantec更新包[XP-i32]在线下载脚本

3283 0
编写初衷:公司用的是Symantec杀毒软件,在客户端更新失败的时候,维护人员总是需要手动去下载离线更新包然后到客户端执行,非常麻烦!于是写了这个脚本丢到服务器上建立任务计划,客户端要更新的时候直接脚本调用\\server\symantec\update\20131225-002-i32.exe即可。脚本名称:Symantec更新包[XP-i32]在线下载工具脚本功能:主要用于Syma...
12月17日 · 2013年

[转]批处理For语句从入门到精通

1808 5
申明:本资料转自批处理之家,版权归作者:namejm 所有,如需转载请注明。原帖地址:http://bathome.net/thread-2189-1-1.html此文是俺学习批处理的启蒙教程,作者非常详细的分析了批处理最核心的for命令以及变量延迟,对于要学习批处理的童鞋非常值得仔细研读。一 前言二 for语句的基本用法三 for /f 含变量延迟四 fo...
12月20日 · 2013年

[持续更新]批处理全盘搜索系列案例

4060 0
虽然现在全盘搜索相关的实用软件很多也很强大,但是在手头上无法下载的时候,批处理这个"资深前辈"又得派上用场了,接下来介绍的代码均为全盘范围的批处理:案例一、列出我的电脑中的所有硬盘分区@echo off title 列出硬盘分区 for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do ( ...
7月1日 · 2015年

Windows下bat批处理脚本使用telnet批量检测远程端口小记

14225 21
多年没写过批处理了,来新公司的第一个case却是需要写一个bat脚本,批量更新采集agent的配置文件,其中就涉及到远程IP的端口检测。本以为会和Linux一样可以简单判断:echo q|telnet -e \'q\' $ip $port && echo "$ip:port 通"||echo "$ip:port 不通"结果发现Windows下面telnet退出并没有执行...
2月8日 · 2020年

网站预缓存工具,提升网站整体加载速度

11402 0
由于电信宽带和谐了443端口,近期我花了不少时间折腾了下近半年都没瞅一眼的博客。经过一番折腾(详见前文),博客总算可以运行在家里的NAS上,整体部署方案如下:图1. 张戈博客部署架构图一、预缓存从上图可以看到,由于中间用于代理转发的腾讯云CDN和阿里云CDN都是没有缓存的,如果CloudFlare的缓存过期,将需要绕过多层链路回源获取网页内容,相比速度就会慢很多。所以,需...
1月10日 · 2014年

Win平台Web访问白名单设置脚本(IP安全性原则)

4303 0
最近老是有用户申请开通某网站的访问权限,我接手之前浏览权限的设置方法是修改tomcat下的server.xml配置文件,通过定义allow="IP.."的访问规则来控制浏览权限。这种方法有个很不好的地方,每加一次权限,你就得重启一次tomcat,用户老是挤牙膏一样,一次一两个IP的发邮件来申请开通,不但很烦人,而且对正在使用的用户体验也非常的糟糕!于是我决定要改善这个糟糕的局面。在Linu...
操作系统阅读更多
11月4日 · 2014年

硬盘故障时如何强制关机:Input/output error

10565 42
如果硬盘可能会出现锁死或坏道的故障,会造成SHELL命令的失效,包括 reboot,powoff,,shutdown,用正常的命令是没法完成重启的。执行这些命令,会出现如下IO报错:# rebootbash: /sbin/reboot: Input/output error# shurdown -r nowbash: /sbin/shutdown: Input/output...
12月30日 · 2013年

Linux从零到高手的进阶心得

1641 2
从2006年毕业至今,从事IT行业已经接近8个年头。一路走来有很多心路历程和技术心得都写在了51CTO的博客中,不少文字现在看来已显稚嫩,但是这正是我真实的成长之路。这八年,从最基础的网络管理员开始,从最下层的IT工作比如说做水晶头做起,慢慢的走过国企、干过外企,做过网络管理员、系统工程师、项目经理、Linux讲师,经历过众多重大的项目(包括政府部门、国家重要民生相关项目),流过汗熬过夜,...
12月12日 · 2015年

解决Linux修改密码报PAM authentication failed错误

14615 25
最近接到一个运维开发任务,需要开发一个帐号管理系统,对手头三千多台Linux服务器的root帐号进行批量系统的管理,实现定期修改root为随机密码并加密存储,并向运维管理WEB前台提供密码查询解密接口等功能。刚开始,我基于php+ssh2_exec开发了一套雏形。基本功能都实现了,结果老大说这里的运维就我稍微会点php,后面可不好维护。本来也被我说服了,因为写都写好了,难道要重构?...
4月4日 · 2014年

Linux优化方法收集与整理

2611 15
之前一直有博主要求整理下VPS主机优化方法,那么如果你是VPS主机(Linux),可以尝试一下了,尤其是linux系统的内核参数优化。一、增加SWAP分区VPS(Virtual Private Server 虚拟专用服务器)技术,将一部服务器分割成多个虚拟专享服务器的优质服务。每个VPS都可分配独立公网IP地址、独立操作系统、独立超大空间、独立内存、独立执行程序和独立系统配置等。下...
7月18日 · 2014年

Linux/SUSE安装svn客户端的问题记录

6116 11
这2天负责架设一个支付业务的webserver测试项目,安装svn客户端的时候出现了各种问题,来记录下。一、简单的说下安装过程:#下载wget http://subversion.tigris.org/downloads/subversion-1.6.9.tar.gzwget http://subversion.tigris.org/downloads/subversion...
11月29日 · 2018年

Linux运维基础技能: 接入层与网络基础

3731 18
本系列文章一共三篇,分别为《脚本编程与 Linux 命令》、《接入层与网络基础》和《 MySQL 与 SQL 优化》,由腾讯高级工程师 luaruan(阮永顺) 原创、张戈博客整理分享,如有勘误请在博客留言。希望对需要学习、面试 Linux 运维的同学有所帮助。MSS与MTU的区别,默认大小各是多少? 标准以太网接口缺省的MTU(最大传输单元)为1500 字节,是最大帧151...
8月28日 · 2014年

Linux/VPS系统安全设置整理

2443 12
最近入手了一台创宇云的VPS,然后将2个网站都给搬家了。作为一个运维工程师,终于不用再处处受制于人了,虚拟主机真的只能玩个球!拿到VPS并快速部署好环境后,开始着手完善一下安全设置,以下过程记录,供大家参考:一、用户权限安全设置root权限太高,误操作就相当危险,所以日常操作使用普通账号,只有特定时候才使用su切换到root身份。①、新建普通用户,比如zhangge...
3月2日 · 2014年

启用某些Linux发行版的root帐号

2302 12
跟了我5年多的本本已步入花甲,CPU严重老化,运行Windows异常吃力,于是考虑换成Linux试试。忙活了一天,测试了2个“家用”Linux发行版,一个是深度的Linux Deepin 2013,另一个是雨林木风的StartOS 5.1。在测试过程中也遇到一些有用的经验,现在就一一记录一下。这些发行版和ubuntu一样,root帐号都是停用的,在我安装完后,发现进行一些操作时,提示权限不...
5月19日 · 2014年

LVS中Windows作为真实主机(RealServer)时的设置方法

4438 22
最近,公司新推了一个电商项目,IIS+ASP。而上面大大规划了要用LVS负载均衡集群,在这个技术陈旧的企业,LVS项目还是去年才真正推行。由于最开始是由我测试的,所以这次的部署又落到了我头上了。 之前一直是在RHEL上做的LVS+Keepalived,现在换成Windows主机,虽然在集群架构上的理解没啥问题,但是这Win主机做RealServer具体该如何设置还真没弄过。不过,万能的搜索引擎很快...
5月4日 · 2014年

在Linux中发现IP地址冲突的方法

5581 8
Linux下出现IP冲突,是不会像Windows那样,在右下角弹出冲突提示的。博主就出过一次糗,记得当时是在VM虚拟机里面安装了4个redhat,测试LVS集群。结果发现其中一台RealServer老是掉线,重启network服务后能正常几分钟,然后又掉线了。。。4个Redhat都是VM克隆出来的、完全一致的系统,仅其中一台出问题,所以博主觉得匪夷所思!直到,后来我的办公电脑(宿主)网线直接没...
WEB应用阅读更多
3月13日 · 2014年

HTTP加速器varnish安装小记(1)

7502 32
上午共享的那个varnish安装手册,个人看了下,有点不知所云,好吧~看来还是先安装玩玩!苦逼公司服务器没法连外网,不能用什么wget或yum命令直接下载安装,每每看到别人博客贴出的在线安装代码时,总有一股羡慕嫉妒“恨”冒了出来。。。好吧,既然没法上外网,那只能麻烦点通过下载源码来编译安装了!Varnish 3.0.4下载地址: http://repo.varnish-cache....
7月7日 · 2019年

CloudFlare边缘计算Workers尝鲜初探:博客跳转中间页

9006 42
4月27日,有幸参加了由Aftership组织、CloudFlare的大牛孟鑫主讲的《CloudFlare 最新边缘API,打造无服务器(Serverless)架构》课程,感觉收获颇丰。因为这个课程非常接地气,大部分内容都在实战,而不像有些分享一味的讲理论、拼PPT,听得云里雾里,分享的时候是一个样子,真正你去尝试的时候却是另外的样子,duang~,当然,还有一个原因就是张戈博客目前也在用Clo...
12月24日 · 2014年

Nginx在线服务状态下平滑升级或新增模块的详细操作记录

17571 13
今天,产品那边发来需求,说有个APP的IOS版本下载包需要新增https协议,在景安购买了免费的SSL证书。当我往nginx上新增ssl时,发现服务器上的nginx居然没编译SSL模块!看了下旧版本nginx的configure选项:linux-gz215:# /usr/local/sbin/nginx -Vnginx version: nginx/1.0.11built by...
3月3日 · 2015年

Apache/Nginx伪静态规则匹配http://出现的问题与解决

2020 8
这个问题不知道有没有人遇到过,反正度娘和谷姐都没能帮到我!困扰了我挺长时间了,今天偶尔将代码放到Apache服务器下测试时,意外解决了!问题是这样的,我搭建了一个网站icon图标抓取的API接口,正常情况下对象的传参是通过$_GET[\'url\']获取的,因此常规获取图标的地址应该是:http://domain.com/?url=zhang.ge或http://domai...
8月13日 · 2016年

修改Apache的超时设置,解决长连接请求超时问题

12912 47
某日,组内后台开发找到我,问我们的WEB服务器超时设置是多少。他反馈的问题是,有一个VLAN切换任务cgi接口经常返回504网关超时错误,要我分析解决下。我问了一下,得知这个请求遇到网络设备对象较多的时候,需要小半个小时才能完成,也就是要用到长连接才行。老规矩,从开发那拿到接口地址,得到接入层服务器IP,是一台Haproxy代理,看了一下Haproxy的超时设置:# 设置成功连...
5月2日 · 2019年

分享一个Nginx反向代理的另类应用案例

10604 37
博客前面分享了一篇《分享一个Nginx正向代理的另类应用案例》,时隔不久,身为救火队员、万金油的博主又再一次接到了一个另「W」类「T」需「F」求:场景和上次有些类似,也是部门引进的第三方应用,部署在各个网络区域,从OA办公区域无法直接访问。目前,运营人员都需要登陆Windows跳板机,才能打开这些应用的WEB控制台。既不方便,而且还有一定Windows服务器的维护工作量,于是找到我们团队...
12月29日 · 2014年

Nginx在CDN加速之后,获取用户真实IP做并发访问限制的方法

19414 12
最近一直在帮一个购买了张戈博客付费服务的朋友做网站防护,为了简单抵挡一下竞争对手的DDoS攻击,他给网站开启了Incapsula的免费CDN服务。开启CDN之后,我之前给他写的Shell防护脚本也就宣告无效了,因为不管是正常访问还是攻击访问,脚本拿到的IP都是CDN节点的,而我不可能把CDN的节点IP也给禁用了,那就都不能访问了。为了解决这个窘迫,我想到了以前看过的Nginx访问限...
1月13日 · 2015年

PHP彩蛋还是漏洞?expose_php彩蛋的触发和屏蔽方法

5679 4
最近在折腾网站XSS漏洞修复的时候,当我把XSS漏洞和谐成功之后,360扫描送来了一个"彩蛋": 本以为又是360误报,结果点击看了下,还真能打开PHPinfo:PHP彩蛋我也是第一次听说,貌似老一辈的程序员们都知道,因为PHP是由黑客语言发展而来,所以各方面都透露着放荡不羁的极客精神!一、如何触发PHP彩蛋?我们只要在运行PHP的服务器上,在域名后面输入...
5月18日 · 2014年

nginx配置文件参数详解

5366 32
这年头原创技术博文真心难写,不可能每天都有灵感,也不可能每天都出问题。而且技术教程也非常全面,不管是百度一下,你就知道,还是谷歌一把,你就找到,基本要啥有啥,只有你想得到,没有你搜不到。。。如果突然发现搜不到了,那恭喜你,你又可以来个原创研究项目了!之所以开篇吐槽这么多,也是因为张戈今天确实没东西写,又不想转载, 就来点伪原创吧!主要是更换域名之后,确实需要很长一段时间的原创文章来取得搜索...
2月27日 · 2014年

解决Tomcat数据连接池无法释放

11134 12
近段时间,公司的检测中心报表系统(SMC)的开发人员时不时找到我,说用户老是出现无法登录的情况。前些日子因为手头上有Jboss集群的测试工作,发现用户不能登录时,都是在Tomcat中将这个项目Reload一下就好了,不过只是治标而已,因为大概几个小时之后又会再次出现无法登录的情况。今天上午,开发人员小毛又找到我,要我协助将这个问题根治一下,拖太久用户难保不投诉。简单分析了一...
11月14日 · 2021年

APISIX运维优化之配置文件自动化生成方案

4543 1
Configmap的方式来配置APISIX。最开始我们就采用 Configmap的方式在腾讯云TKE上部署APISIX,当网络区域越开越多时,每个TKE集群都需要去定义一套config.yaml对应的Configmap,管理非常繁琐。因此,这里我们利用Python的Jinja2插件来自动化渲染APISIX的配置文件,整体非常方便!...
11月3日 · 2021年

APISIX插件开发之精细化限速插件

4030 0
在实际业务场景中,APISIX限速太笼统,达不到业务要求,最终,我们自己在limit-count插件基础上进行改造,重新设计一个限速机制,能够针对不同的服务给不同的Consumer设置差异化的访问限速,满足生产环境更精细化的限速需求。...