东拉西扯

张戈博客正式启用全新个性域名: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:支持私有化部署和源阅读无缝对接的语音合成服务

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

WordPress显示访客UA信息:Show UserAgent纯代码轻度汉化版

9355 42
前几天在修复留言日期显示错误的问题时,突然觉得可以在这个位置集成一下访客信息,因为见到过不少博客的留言板都有了类似的功能。经过搜索、测试并筛选,最终选定了Show UserAgent这款插件。在本地测试了一下,感觉还不错!一、强迫症在我熟悉了WordPress插件机制后,我总是强迫症的想将插件修改为代码集成。实际上插件和代码的差别只在于代码不需要用到一些钩子动作(hook action)和...
6月7日 · 2014年

教你如何去掉友荐和无觅的隐藏外链和版权链接

1579 91
最近,为了做无觅的APP,装上了无觅的相关推荐,结果果断不给力,打包了2个星期还在打包,还能再坑点么? 蜗牛般的效率,暂且就不吐槽了。偶尔用站长工具检查外链的时候,居然发现无觅还给来了个隐藏的流氓外链:看了下无觅的源码:<script type="text/javascript"> var wumiiPermaLink =...
4月3日 · 2014年

Linux :MAC 地址克隆方法

2223 25
虽然 MAC 地址由厂商指定,但用户可以改变它,这就是传说中的“MAC 地址欺骗”。你可能会疑惑,弄这个有什么用?好吧,玛思阁举个例子,比如,电信宽带的PP拨号很多时候就是绑定MAC地址的,换一台电脑可能就会拨号失败,这时候的解决办法就是在新机器上克隆已绑定的那个MAC地址即可!一般大部分人仅知道如何对Windows系统的网卡进行克隆,而本文将向大家展示在 Linux 上进行 MAC 地址克隆的方法。...
脚本编程阅读更多
8月5日 · 2014年

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

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

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

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

Python+Shell脚本结合阿里云OSS对象存储定时远程备份网站

11967 51
导读:毋庸置疑,数据备份是网站可持续性运营中至关重要的一个工作,如果还没有做任何备份机制的网站,建议尽早完善,莫要等到追悔莫及。本文将分享一个安全稳定、快速可靠、花费廉价的备份方案。一、优点分析张戈博客在2年前已经分享过一篇关于网站备份的文章:《Linux/vps本地七天循环备份和七牛远程备份脚本》,今天将再次结合这个脚本,将网站数据通过阿里云内网备份到阿里云OSS。对于阿里云...
12月17日 · 2013年

身份切换脚本,免登入切换权限的利器

1426 1
分享一个我曾经写过的功能代码:工具身份切换脚本,主要用于脚本执行期间其他身份(如administrator等)的切换,从而获取到所需权限。使用说明:1.将下面的代码保存为bat脚本,如switch.bat,其中的【你要加权执行的外部程序或脚本】需要根据实际情况修改成你将要执行的文件路径2.在你切换前启动的脚本中加入 call "%~dp0switch.bat" (%~dp0表示...
8月31日 · 2014年

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

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

[持续更新]批处理重命名系列案例

1268 1
批处理用于文本/文件的操作确实非常简单有力!不用多么复杂的代码,仅一个记事本加上简洁的代码即可搞定大部分文本/文件的操作,下面记录下我用过的一些代码,基本都是我在百度回答知友的一些代码,既给涧客们参考,也让起到备忘的作用。。。。(本文是系列博文,将持续更新,敬请关注!)案例一、百度原址 知友问:想把一个文件夹里的全部文件都命名成001,002……这样按顺序,什么顺序无所...
12月20日 · 2013年

批处理判断第一个硬盘的最后一个分区并进入

1166 0
参考批处理之家写给百度知友的。→百度问答原址@echo off echo 批处理初始工作目录为%cd%,开始切换... for /f "tokens=3 delims==" %%i in (\'Wmic Path Win32_LogicalDiskToPartition^|find /i "Disk #0"\') do call :check %%i echo. ...
3月1日 · 2022年

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

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

SEO技巧:Shell脚本自动提交网站404死链到搜索引擎

16272 74
最近在折腾博客主题,通常来说大多数人认为换主题会影响SEO,实际上只要你把工作都做到位了,是没有任何问题的。比如,换主题后你得仔细检查标题和描述等内容是否发生改变、换主题后是否带来了大量的404页面等。当然,更细微的可能是换主题之后,网站的内链网络也发生了微妙的改变,但是整体的影响较小。总之,张戈博客这次更换主题基本上没有看到明显的SEO影响,反而出现几个新的关键词。好了,题外话到...
6月26日 · 2014年

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

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

Linux优化方法收集与整理

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

Windows 7下获取System权限

1788 0
公司推Win7了,作为IT部门,铁定是先行测试的小白鼠。于是先给我们安装了Win7工作环境。一直以来,除了服务器,普通办公PC的管理员都是被桌面运维部收管的,其他IT部门使用的都是普通AD账号。对于我这样喜欢折腾测试软件的人来说,没有管理员权限是很痛苦的一件事情!还未推广Win7时,我就用了这个获取System权限的办法,变相的取得管理员权限,而网域监测系统却不会报警。废话不多说,直接上菜...
1月5日 · 2015年

Linux系统内存监控、性能诊断工具vmstat命令详解

4598 4
最近,烦心事有点多,博客也像是进入了便秘期。虽然还远远不到说放弃的地步,但总有一种挤不出牙膏的郁闷感。很怀念前几个月的冲劲和激情,一天都能存好几篇优质草稿。看来,张戈博客是首次进入瓶颈阶段了!没办法了,先转点基础教程充门面,当然也是为了温故而知新。vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用...
7月10日 · 2014年

服务器日志备份超节省空间的思路

1426 11
这两天,监控频繁发来服务器磁盘空间90%+的报警,打扰睡觉不说,塞得满满的总是不舒服的。刚来公司才20天,对于部分细节上的运维了解得还不是很到位,比如这备份机制是怎样的?于是,将几台空间老报警的服务器的文件及任务计划仔细看了下,总算是摸清楚了这新公司的重要日志的备份机制了:由于最终存储备份的2台机器用的是增量同步备份,从而越来越大。而日志要留着以备查验,只好考虑做压缩备份了。...
4月29日 · 2014年

教你如何查看Linux的CPU负载

1789 6
记得博主以前被问到CPU负载如何才算高的时候,出过一次糗,具体就不记录了。。。在网上找了一篇比较详细的Linux下的CPU负载算法教程,科普一下。不感兴趣,或看不懂的朋友无视即可,不必浪费时间哈。昨天查看Nagios警报信息,发现其中一台服务器CPU负载过重,机器为CentOS系统。信息如下:2011-2-15 (星期二) 17:50   WARNING - load av...
10月15日 · 2014年

Linux系统最大文件打开数优化,解决Too many open files报错

1558 3
这是一个Linux系统常见的故障,网络上也能轻易的找到解决办法,我也只是在工作中遇到了这个问题,所以在博客记录下,以备不时之需。一、报错截图:图为resin的报错日志,很明显提示了Too many open files:  二、临时解决临时的解决办法很简单,先执行ulimit -n 65535,然后重启resin即可。Ps:请注意启动环境是否生效:...
7月4日 · 2014年

利用Centos或RedHat的iso镜像搭建本地yum仓库

1384 16
这两天工作是用几台PC机给开发组搭建本地测试环境:CentOS-6.4-x86_64 + ant + svn。为了操作简单及系统稳定,全部系统采用最小化安装方法。又出于拓展考虑,决定给每台测试机建立一个本地yum仓库,方便安装缺失组件,而不再受到依赖性的困扰。下面分享一下利用iso镜像搭建本地yum仓库的简单步骤:一、准备工作下载或拷贝CentOS或RedHat的iso镜像...
8月27日 · 2014年

Linux系统date命令无法修改或同步时间的解决办法

7718 7
今天,在站长交流群里面,又一个站长抱怨服务器每星期都必须手动重启一次,否则QQ登陆功能无法使用,原因是服务器时间快了5分钟以上,腾讯服务器拒绝提供API服务。本以为只要加一个简单的linux时间同步任务计划即可,结果我拿到root后,发现并不是那么一回事。在我正确添加了ntpdate 任务计划之后,手动执行了时间同步命令,发现时间依然没有变化。手动执行 date -s 16:00:...
3月22日 · 2014年

Linux:mv 命令的10个实用例子

6294 18
当你想要将文件从一个位置移动到另一个地方并且不想复制它,那么mv 命令是完成这个任务的首选。本文中总结了十个Linux mv 命令的实例,希望能给大家带来一些帮助。熟悉了复制命令,下一个相关的命令就是 mv 命令。当你想要将文件从一个位置移动到另一个地方并且不想复制它,那么mv 命令是完成这个任务的首选。初识 mv 命令mv 命令是一个与cp类似的命令,但是它并非创建文件或目录...
1月2日 · 2014年

安装完Win7之后推荐做的一些设置

3675 1
 前言:不知道写什么,就总结一下我个人安装完成windows7之后要做的一些设置吧!以下全文均为个人回忆总结,文章也很冗长,难免有纰漏或者不符合你个人习惯的内容,如果发现有让你觉得很不屑的内容,立即关闭此网页,以免浪费时间~~虽然Win8已经推广使用,但目前windows7还是普通用户的主流系统,个人虽然也挺喜欢Win8的一些功能,比如超级任务管理器、可暂停的复制/粘贴等。但个人比...
WEB应用阅读更多
12月12日 · 2021年

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

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

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

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

实测Nginx服务器开启pagespeed加速效果

11739 21
上周有一个站长问到我一个问题,问fastcgi_cache和pagespeed加速有没有冲突。略微想了下,2个都是比较原生的主,应该不存在兼容问题。至于这个朋友问到这2个机制处理的先后问题,我思考了下。既然fastcgi_cache已经是缓存到本地的文件,那么pagespeed肯定是后处理的。通俗来说,就是当用户访问WEB时,Nginx 应该是先调用 fastcgi缓存,然后再进行page...
10月28日 · 2021年

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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