东拉西扯

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

神马搜索推出开放平台,致力于移动互联网

1618 12
昨天在截取张戈博客移动适配效果图时,赫然发现UC神马搜索site命令第一条出现了站长工具信息:立即点进去看了下:网址:http://open.sm.cn注册并登录后,将手头的2个网站都添加验证一番:接着,提交了一下常规sitemap,发现一天一夜了,还未处理:最后,看了下神马平台的移动适配规则:1. 基本功能供站长...
8月30日 · 2014年

你知道Windows和WordPress上帝模式吗?

1222 19
一、Windows上帝模式这个玩意出来很久很久了,估计不用多说,知道的同学还是挺多的,不知道的也只要百度一下,你就知道了。方法很简单,在Windows系统任何地方新建一个文件夹,如下命名即可:上帝模式.{ED7BA470-8E54-465E-825C-99712043E01C}效果预览: 二、WordPress上帝模式哈哈,有点标题党的...
4月14日 · 2014年

互推联盟js代码,欢迎调用!

1348 92
不久前,张戈博客刚推出自适应的互推联盟通用代码,得到了很多博主的支持和响应,在这里张戈对调用iframe代码的各个博主说声感谢!是你们的支持,给我带来了无限的动力!今天,在逛博客的时候,发现居然有博主仿制了张戈博客的互推联盟自适应页面。本来心里会有点不爽的,因为扒代码也不先和我说一声。。。虽然我这个页面是拿了酷嗨哥的源码,但个人真的倾注了很多心血呢!不过,后来看到他已经写文说了来源,所以我...
脚本编程阅读更多
9月28日 · 2015年

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

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

Shell脚本的简单排错法及调试程序bashdb

9450 32
Jboss的研究稍有卡壳,那就来点基础教程好了。与众多脚本语言一样,Shell脚本在执行时出错是很常见的,最简单的原因无外乎脚本在编写的过程中出现了语法错误或者不小心输错了命令等。找出脚本中的错误是很重要的能力。比如,我经常不小心会把echo命令写成了ehco,那么执行就会出现下面这种情况:[root@localhost ~]# sh testtest: line 2: ehco:...
12月21日 · 2013年

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

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

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

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

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

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

利用腾讯云COS云对象存储定时远程备份网站

9158 81
导读:2个月前,张戈博客分享了一篇Python+Shell定时备份网站到阿里云OSS的教程,已经有非常多的站长朋友用上了,反馈还不错,也有不少朋友提出了很多优化建议,比如上传完成后能否删除本地压缩包之类的,本文将继续分享另一种云端备份方案。一、优点分析内网传输:和阿里云OSS一样,腾讯云COS同样支持内网和外网文件传输,对于腾讯云服务器,使用内网传输绝对是最快、最稳定的备...
3月29日 · 2015年

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

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

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

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

百度开放适配&360移动适配专用Sitemap格式转换工具

8685 52
此工具可将标准版的sitemap.xml转换成电脑版—移动版的对应关系sitemap,用于百度开放适配&360移动适配的文件提交。工具用批处理制作,仅起到批量转换的辅助功效,免去手动制作的麻烦!可以用于移动适配的提交测试!张戈不会php,而shell又不能普遍适用,所以只能挑了自己比较拿手的批处理来制作这个辅助工具!因为批处理的局限性,做出来的工具只能用于尝鲜测试使用!或长期不更新的CMS企业网站来提交移动适配sitemap。另外,响应式站点亦无需提交适配!...
5月7日 · 2017年

分享一个自写的Python远程命令和文件(夹)传输类

8374 37
最近在跟一个自动化发布平台的建设事项,其中Linux系统的远程控制通道则由我独立开发完成,其中涉及到了Linux系统远程命令和文件传输操作。因为之前写Linux系统密码管理系统的时候,用的是Paramiko的SSHClient。所以,我这次依然采用Paramiko来做实现,代码虽短,说起其中的坑,我也是一把辛酸一把泪的填上了。先上完整代码:# -*- coding: utf-8...
操作系统阅读更多
7月24日 · 2014年

Linux下用dd命令测试硬盘的读写速度

4449 17
这也是一个老方法了,只是今天用到了,就过来记录下。总觉得公司服务器磁盘不给力,有时候vim编辑的时候都会卡顿,IO经常90%+,很纳闷,就测试了一下磁盘的读写速度。一、测试写速度:time dd if=/dev/zero of=/tmp/test bs=8k count=1000000测试结果:565 MB/s二、测试读速度:time dd if=/tmp/te...
12月19日 · 2013年

分享一个Linux无法创建文件夹,但是目录权限却显示正常的问题和解决

7584 0
今天发现一个疑难杂症:发现批量发布一个新版本程序时,发现有一台没有成功。亲自登陆上去看了下,发现原来是发布帐号在某个目录下创建目录失败了!人工 touch 试了下,发现提示没有权限。然后 ls -l 看了下,发现一切正常:[root@10.12.212.132:/data/TNM2/release]# ll 36240-rw-r--r-- 1 publish user...
10月15日 · 2014年

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

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

解决mstsc无法连接问题:由于没有远程桌面授权服务器可以提供许可证…

4683 3
最近一直很忙很忙,完全没时间打理博客,回家后基本上就是洗洗睡的节奏,我之前真的从未想过,我会有回到家不想碰电脑的情况。。。不但不想碰电脑,而且失眠症也消失无遗,因为实在是太疲劳了,总算是有了些好处。这几天实际上也有一些可以记录的工作经验,无奈一直没有头绪也没时间,刚好趁着今天午休间隔,先整理出一小部分好了,不然博客就真废了。。。一、故障案例①今天上午在给测试组的IIS新增https...
12月18日 · 2013年

LVS+Keepalived负载均衡主备&双主架构全攻略

12169 2
LVS+Keepalived 介绍LVSLVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq...
8月13日 · 2015年

Linux在批量服务器管理中实用的PS1命令提示符格式

4333 5
作为一个大公司的运维,手头管理了成百上千的服务器是家常便饭,甚至更多。而我们一般都是用跳板机登陆,由于这些机器一般都是克隆或者虚拟化出来的,所以登陆后的命令行提示符几乎是一个模子刻出来的,比如都是:[root@localhost ~]#这时,我们肯定会经常遇到这样一个困扰:操作服务器时因某事中断,回头继续操作的时候肯定会ifconfg确认下是否是我要操作的服务器,因为无法从表象识别...
1月14日 · 2015年

Linux系统监控、诊断工具之top命令详解

1228 6
暂时没有写作灵感,就整理一些Linux基础知识好了,方便自己查阅,同时也是温故而知新嘛~!在张戈博客,同样很有用的知识性博文还有以下几篇,也许你也会比较感兴趣:详解Linux系统的CPU负载均值教你如何查看Linux的CPU负载Linux服务器的进程查看命令详解Llinux文件目录权限及chmod命令简析Linux系统内存监控、性能诊断工具vmstat命...
5月24日 · 2014年

妹子你真萌:一次心惊肉跳的服务器误删文件的恢复过程

3791 44
刚在我的订阅里面看到这篇文章,在爆笑之余也让跟我一样的运维农民工们发人深省,所以转过来分享一下。妹子啊妹子,网上找的东西也不能直接照搬啊,太萌了~~哈哈!作者也是挺萌的,重要服务器给妹子当成练手的工具,看来荷尔蒙又出来作恶了,嘿嘿!下面且看事件始末:经历了两天不懈努力,终于恢复了一次误操作删除的生产服务器数据。对本次事故过程和解决办法记录在此,警醒自己,也提示别人莫犯此错。...
3月24日 · 2014年

Linux:10个实用的网络和监控命令

4282 13
本文列出了10个基础的每个Linux用户都应该知道的网络和监控命令。网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool 用于查看linux服务器ip地址,管理服务器网络配置,通过 telnet 和ethernet建立与linux之间的网络链接...
4月5日 · 2016年

分享一次Linux任务计划crontab不执行的问题排查过程

4020 23
朋友弄了一个小项目,要我帮忙做下Linux系统运维,上线一段时间后,发现项目偶尔会挂掉导致服务不可用。开发朋友一时之间也没空去研究项目奔溃的根因,只好由我这个运维先写一个项目进程自拉起脚本,通过Linux任务计划每分钟检查一下进程是否存在来避免项目挂了没人管的情况。自拉起脚本很简单,随便写几行就搞定了:#!/bin/bashprocesscount=$(pgrep my_app|w...
WEB应用阅读更多
2月28日 · 2015年

阿里云盾网站安全防御(WAF)的正确使用方法

4256 23
将2个网站搬到阿里云,一个是因为阿里云稳定,另一个就是牛逼轰轰的云盾了。之前在博客联盟群里模拟CC攻击过搭建在阿里云ECS上的博客,结果云盾毫无反应,而网站已经挂了。这次特意细看了一下云盾上的CC防护功能,发现有部分朋友估计并未正确使用WAF。所以,我在本文就简单的分享一下阿里云盾-WAF网站防御的正确使用方法。一、域名解析大部分朋友,只是开启了云盾就不管了,这也就是很多朋友受到C...
5月20日 · 2015年

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

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

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

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

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

2059 0
在决定全面铺开使用APISIX之前,Kong网关在我们的生产环境已经试用了将近一年,因此存在大量的生产环境API接口使用的是Kong HMAC鉴权。此次迁移到APISIX网关,为了减少客户端的改造工作,我们决定将Kong网关的HMAC鉴权插件移植到APISIX,同时将Kong的HMAC认证作为后续API接口的统一鉴权方案。...
5月2日 · 2019年

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

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

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

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

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

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

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

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

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

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

ipvsadm启动报错解决办法,另附ipvsadm详细参数

6211 10
记录ipvsadm 启动报错的解决办法,并附上详细的ipvsadm参数说明报错信息:[root@localhost ~]# service ipvsadm start Clearing the current IPVS table: [确定] Applying IPVS configuration: /etc/init.d/ipvsadm: line 62: /etc/sysconfig/ipvsadm: 没有那个文件或目录...
2月3日 · 2018年

小网站最简单实用的动静分离优化方案

12956 45
很久没写文章了,博客已经长草了,今天挤点时间分享一些小干货,也是回应一下不少站长朋友的留言问题。有不少站长朋友问张戈博客的静态文件为啥是另外一个域名?有啥好处?如何实现?其实这算是一种动静分离的做法,不过我这里用了偷懒的办法实现,而非彻底的动静分离,不过最终效果的区别并不大。先啰嗦一下动静分离的概念和好处。一、动静分离我们的网站简单来说分为2种数据...
9月25日 · 2014年

服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站

4348 67
我们都知道网络上的爬虫非常多,有对网站收录有益的,比如百度蜘蛛(Baiduspider),也有不但不遵守robots规则对服务器造成压力,还不能为网站带来流量的无用爬虫,比如宜搜蜘蛛(YisouSpider)(最新补充:宜搜蜘蛛已被UC神马搜索收购!所以本文已去掉宜搜蜘蛛的禁封!==>相关文章)。最近张戈发现nginx日志中出现了好多宜搜等垃圾的抓取记录,于是整理收集了网络上各种禁止垃圾蜘蛛...