东拉西扯

张戈博客正式启用全新个性域名: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运维优化之解决长尾请求(耗时抖动)问题

1月16日 · 2025年

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3675 0
自从APISIX网关推广使用以来,在我们部门已经有很多生产业务接入使用。有一天被拉进了一个问题群,被告知APISIX网关性能有问题,整体表现还不如之前的ZUUL网关。纳尼?APISIX性能再怎么不济也不至于比ZUUL差吧?废话少说,直接上手弄了个串行请求对比测试了一下生产环境的APISIX网关和ZUUL网关,结果大跌眼镜!正常情况下,APISIX的耗时都优于ZUUL网关,但是AP...
5月2日 · 2014年

WordPress静态缓存三剑客,强力推荐!

5032 39
之前一直用的wp-super-cache,效果确实非常不错!网络不出问题的话,页面基本秒开。可惜,这款插件有时候会缓存我的手机主题,导致在电脑上浏览时,呈现的也是手机样式,有点不爽!本想尝试JS来切换主题的,可惜博主太笨,没搞定!只好忍痛割爱,放弃了wp-super-cache。最终,在将常见的缓存插件都测试了一遍之后,找到了本文的主角——>静态缓存插件三件套:Hyper C...
6月4日 · 2015年

Linux下的mongodb服务脚本,以备不时之需

6310 8
前些天,一位开发同事找到我,说他测试环境的 mongodb 经常挂掉,要我写一个监控或复活的脚本。我觉得很奇怪,测试环境又没啥负载,经常挂掉肯定有非常规原因。跑过去看了一下日志,发现存在stop记录,我就纳闷了,没人操作他还会自己stop。这明显不是挂掉了,于是到history中看了下同事的启动命令:/usr/local/mongodb/bin/mongod --dbpath=/usr...
5月10日 · 2014年

张戈+博客的百度指数怎么这么高?

4910 80
最近,博友圈子里都在热烈讨论关于 50+seo 或者 seo+50 的超高百度指数是不是一个BUG。其中,冯耀宗博主的seo+50更是排在百度搜索第一位!很多人不知道这50+seo到底是什么意思,搜得多了,于是这个词就火了。张戈是一个SEO小白,但是同样也很好奇这玩意。而且,最近将博客更名为张戈博客,很想把 张戈 这个词的百度搜索排名优化下,目前仅排在第四页。于是我挨个试了下,搜索...
脚本编程阅读更多
1月10日 · 2014年

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

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

桌面白屏(Active故障)修复批处理

4782 1
一年前我在做用户系统维护服务工作时发现AD域环境下,AD用户桌面经常会出现壁纸无法显示,ActiveDesktop桌面损坏之类的故障,当时从前人心得里学到的方法就是登入管理员,然后删除用户配置目录(%userprofile%),然后重新登入之后用户桌面就能正常了如此确实能修复这白屏故障桌面,但是用户的所有事设置均被重置,加大了维护工作量,这不是做维护愿意看到的,于是左查右查,我终于找到了症...
6月16日 · 2017年

Python远程控制模块paramiko遇到的问题及解决记录

6028 17
最近一直在开发自动化运维发布平台,底层命令行、文件通道主要基于paramiko模块,使用过程中遇到各种各样的问题,本文主要用于收集问题及解决记录,以备后续使用。一、Error reading SSH protocol banner连接错误这个关键词,在百度、谷歌一搜一大把的提问,也有少部分给出了解决方案,但是最终都无法解决,我经过不断尝试和解读paramiko源码,终于搞定了这个问题,在此...
7月1日 · 2015年

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

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

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

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

Linux操作系统DNS解析(nameserver)监控脚本

8067 20
一、起因昨天,开发组兄弟发现resin日志出现不少支付宝业务报错信息,用户用支付宝购买了产品,钱到账后公司系统却未返回支付成功状态!这还得了?用户明明支付成功了,结果却显示未到账!!!必须赶紧解决,用户投诉是小,用户流失就大了!仔细分析日志后,发现是解析支付宝接口域名(mapi.alipay.com)时出现延时,导致获取不到支付成功的返回信息!检查发现OpenSUSE的name...
11月5日 · 2014年

Linux系统防CC攻击自动拉黑IP增强版Shell脚本

28253 53
最新更新:张戈博客已推出功能更强大的轻量级CC攻击防御脚本工具CCKiller==>传送门前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存黑名单突然无法过滤后台,导致WordPress无法登录!虽然,可以通过修改本地hosts文件来解决这个问题,但是还是想暂时取消CDN加速和防护来测试下服务器的性能优化及安全防护。前天写的Sh...
8月5日 · 2014年

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

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

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

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

CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放

21837 259
张戈博客很久以前分享过一个CC攻击的防御脚本,写得不怎么样,不过被51CTO意外转载了。博客从此走上了经常被人拿来练手的不归之路。当然,还是有不少朋友在生产环境使用,并且会留言询问相关问题。根据这些问题的需求,我花了一些时间重新写了一个比较满意的轻量级CC攻击防御脚本,我给它取了一个比较形象的名字:CCKiller,译为CC终结者。一、功能申明分享之前我必须先申明...
操作系统阅读更多
7月18日 · 2014年

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

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

Linux系统yum命令安装软件时保留(下载)rpm包

9274 4
昨天在部署zabbix监控的时候,遇到一个问题:监控服务器处于无外网状态,在线安装不可用。而某些依赖包度娘或谷姐搜索起来也挺呛人的!于是想到一个办法,利用有外网的服务器的yum命令来安装这些软件,并自动保留安装包即可。于是就有了以下的转载教程:一、让yum命令下载RPM包,而不安装。yum是一个优秀的软件获取与系统更新的工具,主要应用于redhat系列的发行版本上。但是这样一个优秀...
1月23日 · 2014年

如何确保NFS服务安全

1505 4
上一篇博文《Redhat设置NFS挂载的简单步骤》,其中摘录了一段nfs中fuser的使用,索性将其全部发出,以供参考。对于NFS的安全问题,我们是不能掉以轻心的。那么我们如何确保它的安全呢?这里我们首先我们需要分析一下它的不安全性。看看在那些方面体现了它的不安全。NFS服务安全性分析:不安全性主要体现于以下4个方面: 1、新手对NFS的访问控制机制难于做到得心应手,控制目...
12月18日 · 2013年

详解Linux运维工程师必备技能

3575 1
本人是Linux运维工程师,对这方面有点心得,现在我说说要掌握哪方面的工具吧。说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具。我就大概列出这几方面,这样入门就基本没问题了。Linux系统如果是学习可以选用Redhat或CentOS,特别是CentOS在企业中用得最多,当然还会有其它版本的,但学习者还是以这2个版本学习就行,因为这两个版本都是兄...
8月6日 · 2016年

Linux系统 df 命令显示异常、分区丢失问题解决

13023 21
本文记录2种因 /etc/mtab 文件异常导致 df 命令显示异常、分区丢失问题的解决过程,以备后用。一、根目录丢失前些日子,同事在RTX群里问大家,有台服务器执行 df -h 看不到根目录,该如何解决?[root@10.207.126.12:~]# df -hFilesystem Size Used Avail Use% Mounted onudev...
4月6日 · 2017年

远程桌面报错解决:No Remote Desktop License Servers Available

9772 26
用户发来反馈,使用部门Windows跳板机报错:The remote session was disconnected because there are no Remote Desktop License Servers available to provide a license.Please contact the server administrator,最后发现是微软RDP远程桌面套件的一个BUG,可通过安装微软补丁或修改注册表来解决,本文简单记录分享下解决过程......
12月18日 · 2013年

抓取占用CPU高的JAVA线程,进而找出有问题的WEB页面

3469 0
写在前面:当一个台WEB主机(JAVA平台)上有多个站点时,很可能因为一个站点项目出现死锁之类的BUG而导致所有站点挂掉!最烦的就是因为站点过多,在日志无法具体指向的时候,你根本无法确定那个站点出现BUG,从而你也没法推给开发人员解决。                    下面,就介绍一个抓取高占用CPU的线程的简单方法: 运行top命令取得JAVA线程号(PID),假如是2068;...
6月23日 · 2014年

SecureCRT全局发送相同命令,快速抓取服务器信息的方法

10792 11
昨天,在新公司接到了第一个任务:统计所有服务器的几个信息。200多台呢!一个台一台的去执行命令也太苦逼了吧?于是度了下,找到了这个方法,感觉很不错!现在来分享下,希望对像我这样苦逼的人有所帮助!一、SecureCRT同时向多个session发送相同命令的方法对于要管理多台服务器的SA或DBA来说, 如果要在所有服务器上操作同样的命令, 一台台登陆操作是个很笨的方法. 一直以为SecureC...
12月24日 · 2013年

cat命令详解

5819 0
cat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容的;cat主要有三大功能:1.一次显示整个文件。如 cat   filename2.从键盘创建一个文件。如 cat  >  filename只能创建新文件,不能编辑已有文件.3.将几个文件合并为一个文件(点击查看实用例子)。如 cat   file1   file2  > fil...
8月13日 · 2014年

SUSE Linux系统在线安装软件命令zypper参数详解

11384 4
Linux系统安装软件,不管是从性能还是从稳定考虑,优先推荐编译安装的方式都是无可厚非的。不过在编译安装的时候,偶尔会提示缺失一些依赖组件,比如curl-devel、libevent等。这时候,要去找相应的编译包或者rpm包又要耗费时间!而且,往往当你找到并开始安装的时候,很有可能又有新的依赖组件缺失提示!!郁闷死你。。。这时候,在线安装功能就可以出马了,比如Centos下的yum、ubunt...
WEB应用阅读更多
4月12日 · 2019年

惊现Haproxy重复添加X-Forwarded-For问题(附官方解决办法)

5093 7
最近在配置Haproxy代理的时候发现一个很有意思的事情:Haproxy在代理http请求会无脑加一个X-Forwarded-For(后文简称XFF),而不是将自身的IP地址加到已存在的XFF列表之后,WTF!还有这种神操作?确认无误之后,我到Haproxy的github开了一个issue反馈了这个BUG(issue地址),最终了解到了Haproxy就是这样设计的,并得到了解决方案,而且这个is...
11月14日 · 2021年

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

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

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

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

为网站开启Nginx缓存加速,支持html伪静态页面

20398 53
上一篇文章分享了如何开启 Nginx 的缩略图功能,也提到了 Nginx 缩略图在完美替代七牛缩略图或PHP缩略图的同时,还会带来一定的CPU负载消耗。因此,本文就来分享一下如何解决这个实时生成缩略图带来的CPU开销问题。思路很简单,既然你要实时生成,那我就将你生成的缩略图缓存一份好了!在我测试期间发现,Nginx 的缓存也同样可以缓存伪静态的 html 页面,完全可以替代WP-S...
11月3日 · 2021年

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

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

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

3335 13
最近接到了一个需求:通过Nginx代理把现网一个自研代理程序给替换掉,感觉有点意思,也有所收益,简单分享下。需求背景部门的生产环境异常复杂,有部分第三方引入的系统位于特殊网络隔离区域,请求这些系统需要通过2层网络代理,如图所示:中心源系统请求目标系统API的形式各异,我简单收集了下,至少有如下3种:curl --digest -u admin:xxxxxx...
12月24日 · 2014年

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

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

分享一下php7和其他php多版本共存的配置教程

9223 15
年前,终于迎来了期待已久的php7正式版,我也在第一时间就给博客用上了。性能确实有了质的飞跃,问题还是有不少的。比如鱼叔的微信插件在php7下面自动回复异常等。为了继续使用微信插件,我只好将php5.6又开了起来,下面简单分享一下多个版本php共存的方法。一、编译路径多个版本php要共存,必须使用不同的安装路径。比如,之前php5.6安装在/usr/local/php,那么我们安装...
11月11日 · 2016年

解决Nginx配置http2不生效,谷歌浏览器仍然采用http1.1协议问题

3249 30
昨天一个网友通过QQ联系我,说按照我博客之前分享的http2配置教程不能生效,想请我帮忙看看。经过测试,使用谷歌浏览器访问他的测试站点,确实没有开启http2,但他的配置和编译参数都正确的,这有点奇怪了。不过昨天太忙就没有继续帮他分析,他只好将服务器账号和密码都留言给了我。今天中午我抽空在他服务器重新编译测试了一把,才发现原来是这么一个梗!他在编译Nginx之前,使用的是yum...
9月8日 · 2018年

解决网站404页面返回200状态码问题

7114 14
好久没打理博客,突然收到CDN流量预警,发现平均每天40G流量消耗!what?就现在这个访问量,不存在的。看了下CDN日志发现有小人一直在请求博客页面,其中被请求最多的就是CCkiller防御工具那个文章地址。呵呵,我就写一个简单的防御小工具,惹着你啦?实际上我用了CDN,也并没有安装这个工具,所以想试探、想测试效果的麻烦自己去安装使用,攻击我博客毫无意义,挂了又能怎么样?废话就扯...
10月28日 · 2021年

APISIX高级路由之通过Body参数转发请求

5043 0
APISIX的高级路由非常厉害,可以基于任意变量来做转发路由,比如可以基于Header、cookie、querystring参数等。而我们这里历史上有个非常变态的用法:基于Body里面某个参数的值来路由,即不同的值要转发到不同的后端IP:PORT(这个问题主要是因为服务拆分时偷懒,没有推动客户端修改请求留下的尾巴)。...
2月24日 · 2018年

Haproxy进阶管理:命令行控制后端节点上下线

1891 11
很多业务系统都用到了Haproxy这个高性能反向代理负载均衡器。在日常运维当中,Haproxy后端节点的上(接入)、下(剔除)线操作绝对是家常便饭,而且人工重启的时候经常有胆颤心惊的感觉。下面分享一种命令行操作Haproxy后端节点平滑上下线的技巧。一、新增配置Haproxy自带了一个非常实用的管理页面,我们可以在harpxoy.cfg新增如下配置,开启Haproxy监控管理页面功...