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

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

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

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

  • 分享张戈博客的澳门威尼斯人娱乐官网优化方案,缓解国内云服务器配置低下的问题

    分享张戈博客的澳门威尼斯人娱乐官网优化方案,缓解国内云服务器配置低下的问题

  • 澳门威尼斯人娱乐官网集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险

    澳门威尼斯人娱乐官网集成SendCloud邮件代发,规避SMTP泄漏网站主机真实IP的风险

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

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

大数据

解决Nexus Docker仓库搜索镜像返回500错误

之前用Nexus给团队搭建了一个数据仓库,其中Docker仓库配置教程已经整理分享到了博客《Nexus3最佳实践系列:搭建Docker私有仓库》,但是一直有个小问题,使用docker search来搜索会返回500错误: 因为平常不怎么使用搜索,而且Nexus前台也有镜像浏览页面,所以一直没花时间去解决。年前封网好不容易有点空闲,寻思着解决下。 经过定位,发现了问题所在:Nexus里面的Docker有3种类型仓库:group、hosted、proxy,也就是组合仓库、本地仓库和代理仓库,其中组合仓库就是本地仓库和代理仓库的聚合,通过测试发现只有本地仓库才支持search请求,其他2种类型仓库都会500错误。所以,报错的直接原因就是我将search的请求转发到了组合仓库导致的。 解决办法非常简单,在nginx转发里面加一条规则即可: Ps:详见之前的文章:https://zhang.ge/5139.html?。 以下是定位过程,不感兴趣的可以忽略。。。 1、确认Nginx代理日志是正常打开状态,并tail -f idocker.io.log实时查看日志; 2、执行docker search发起搜索: 3、回过来查看日志:发现500错误的内容如下(我这边Nginx改成了json格式): 2个重要的信息:搜索请求使用的是GET方法,请求路径是?/v1/search?q=hello-world&n=25。 4、直接对仓库后端一次发起请求,首先试了下group组合仓库,端口8082: 终于看到了关键的报错: 大概意思是不支持SEARCH,于是继续试了下hosted本地仓库,端口8083: 很明显是可以的,然后再试了下proxy代理仓库,都不行。因此确定只有本地仓库是可以搜索的! 回头看了下Nginx代理的配置,发现我之前将所有GET都丢给了组合仓库,也就是转发了拉取请求,将PUT丢给了本地仓库,意思是转发了推送请求。看来,还需要多加一个规则,将搜索请求转发到本地仓库。 也就是得出了上文的规则: 这个规则明显要加到PUT转发规则之后,以覆盖之。 生效后,再次执行 docker search idocker.io/hello-world,结果如下: 问题得到解决~! 当然,还有点遗憾的是代理和组合仓库不支持搜索~希望后续Nexus版本能够考虑加上这个特性。
NEW
阅读全文
东拉西扯

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

博客2013年12月18日建站时,取名为玛思阁,域名为marsge.cn,沿用了以前逛论坛经常用的一个马甲 ID。后来心血来潮,注册了个人姓名全拼域名zhangge .net、谐音域名 zgboke.com,其中zgboke.com还作为中国博客联盟折腾了好长一段时间,最后因个人精力有限沦为博客的静态文件托管域名。 错过了zhangge.com 在注册zhangge . net的时候,也看过zhangge.com,遗憾的是我在注册不久之前已经被人注册过了,而且还在挂卖。当时建站都没什么起色,根本不会有花钱买过来的想法。 经过3年左右的努力,当时博客到了权4~5,zhangge.com域名所有人联系我说可以转让给我,价格应该是大好几千,具体不记得了。再往后又心血来潮,是不是把zhangge .net换成.com顶级域名?但想想此时再买,估计大几千是拿不下来了,最后用阿Q精神说服了自己:zhangge .net敲起来更顺手(其实只是熟能生巧)! 又错过了zhang.ge 2018年,不记得从什么途径知道了格鲁吉亚.ge这个国别域名。这要是注册个zhang.ge不是非常贴切、非常个性么?于是在搜索引擎搜了下怎么注册,发现国内就趣域网和花生壳可以注册.ge域名,国外格鲁吉亚那边的域名商网站以个人名义也无法注册。另外还在论坛了解到.ge域名一般会溢价。 于是先咨询了花生壳那边这个域名的注册问题,回复我说要企业性质才可以注册(黑人脸?)。再到趣域网咨询了一下客服溢价的情况,客服说2位数的.ge域名都需要溢价。(最高潮的事情来了,我特么当时看错了,以为两位数说得是『.ge』这个国别位数,直到不久之前再次问客服溢价的问题时才发现一直是自己傻逼了。。。。)所以也就没注册了,一个个人博客域名不可能每年花几千块来续费。 后来不久,我再去看这个域名已经被注册了,当时一度认为是趣域网在我咨询后立马注册下来了,不然怎么会这么巧合?我问过就被注册了? 空欢喜一场 2018年7月份的时候,我突然看到这样一条留言: what?居然找上门来了。感觉可能会很贵,所以象征性的发了一份邮件过去询价,结果邮箱地址错误被退回: 又打开zhang.ge自带的转让页面,再po了一个询价留言,仍然石沉大海,这是玩我的吧?所以这条留言一直未审批。 不会再错过了 然而就在上周天(1月20日),难得空闲下来打理博客的时候,又看到这条待审批的留言,于是点开他的博客看了下,发现龙哥原来是一位元老级的站长。当看到了有个『邮我』的功能,心想着应该不可能再错了吧?于是又发了一份询价邮件过去,结果周一就意外的收到了龙哥的回复了。 他给出的报价很合理,我在追问确认这个域名续费也就90大洋之后,直接微信转账,等域名push,这次不能再错过了! 正式启用,全新出发! 域名到手后,到dnspod去注册发现已经被人登记过了,于是又经历了漫长验证解析生效的等待过程。我已经有一台腾讯云国内服务器,所以想着先备案,然后直接接进来替换,结果发现现在不支持.ge的国别域名备案(互联网管理真的越来越严了,听龙哥说2017年之前都可以备案,他的long.ge就备案了),只好又买了一台香港的云服务器(贵一倍),然后弄了一个nginx反代+替换+缓存就上线了。 国内服务器大概4月份到期,还有个云数据库5月份到期,索性懒得理他,一把梭就把所有服务组件都在香港服务器上基于Docker部署了一份(后面抽空分享下,绝对是闪电的速度),然后修改了所有相关解析,正式启用了这个域名,老域名则做了个301跳转。当然,百度、谷歌那边还是去做了下网站改版的处理,目前已经完成了替换。不过现在网站没啥搜索流量,也就无所谓啥时候生效了。 接下来的2天可没少折腾,各种周边兼容替换,比如sendcloud发信域名替换、代码中有些硬编码的替换等,甚至博客logo也花时间PS掉了。 在弄域名邮箱都时候,发现腾讯的域名邮箱不支持.ge域名,于是试了下网易的域名邮箱发现可以,赞一下。不过呢,最后还是用了腾讯的企业邮箱免费版,超赞。 值得一提的是博客的专用邮箱地址我设置为:im#zhang.ge,寓意 I'm zhangge,想想都觉得非常有意思,哈哈。 很久没写这种杂乱无章的文章了,凑合看看吧。。。
阅读全文
WEB应用

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

最近接到了一个需求:通过Nginx代理把现网一个自研代理程序给替换掉,感觉有点意思,也有所收益,简单分享下。 需求背景 部门的生产环境异常复杂,有部分第三方引入的系统位于特殊网络隔离区域,请求这些系统需要通过2层网络代理,如图所示: 中心源系统请求目标系统API的形式各异,我简单收集了下,至少有如下3种: 目前开发GG是用 lighthttp 二次开发实现了这个需求(猜测用到了一堆判断和转发逻辑),存在一定的后期维护工作量,而且这个GG已经转岗去其他部门了,现任开发GG就想直接通过 Nginx 代理来实现,淘汰这个组件,因此就将这个需求丢给了我这个运维了。 需求分析 拿到需求后,我分析了下,应该需要使用正向代理来实现,我们来看下普通的一级正向代理写法: 这个规则的意思是将所有请求都代理到请求对应的主机。这个在内网正向代理上网的时候会用到,这时候用户只需要将你提供的代理设置为http_proxy,就可以访问到直接访问不到的站点。 看起来好像可以满足需求了,But...实际需求是要经过2层代理,那第一层代理的$host必须是固定为第二层代理的地址了!而且Nginx也不支持类似http_proxy的设置,所以照搬正向代理是行不通的。 最终解决 既然正向代理涉及到自动提取目标主机、端口以及请求的特性,那我们就自己设计一个请求方式,方便使用Nginx自带规则来提取并自动代理。 我和开发约定了一个请求方式(之前也用了类似约定),方便Nginx来提取变量并自动代理: 将真正需要请求的API拆成: ?schema=http&host=主机:端口&proxy_url=请求路径及参数,然后请求到第一级Nginx代理服务,一级代理将请求原样传给Nginx二级代理,然后在二级代理上通过正则提取schema、host和proxy_url,并代理请求,即可满足需求。 Nginx一级代理规则(反向代理):反向代理到2个二级代理 Nginx二级代理规则(正向代理):自动提取url里面约定的协议、目标主机和url并代理 最后再套了一层负载均衡,最终生产环境的拓扑如下: 利用Nginx代理,非常轻量的替代了之前开发GG研发的程序,而且后期维护工作量基本可以忽略不计,其中涉及到的安全措施这里就略去不提了,请自行脑补。
阅读全文
操作系统

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

本系列文章一共三篇,分别为《脚本编程与 Linux 命令》、《接入层与网络基础》和《 MySQL 与 SQL 优化》,由腾讯高级工程师 luaruan(阮永顺) 原创、张戈博客整理分享,如有勘误请在博客留言。 希望对需要学习、面试 Linux 运维的同学有所帮助。 MSS与MTU的区别,默认大小各是多少? 标准以太网接口缺省的MTU(最大传输单元)为1500 字节,是最大帧1518减去源宿的MAC、FCS后最大的IP packet大小; MTU减去20字节IP包头减去20字节TCP包头 ,即是MSS,1460字节 一台交换机要保证接口MTU的一致性。如果在一个VLAN上、或整个交换机都采用同样的MTU,避免一些奇怪的问题 参考:https://www.zhihu.com/question/21524257 TIME_WAIT 与CLOSE_WAIT 的区别 主动关闭连接的一方进入TIME_WAIT ,若客户端高并发访问HTTP接口又没有使用会话或者线程池机制,可能会导致本地端口耗尽。 CLOSE_WAIT 出现在被动断开连接。可能常见在Server端,例如在Netty的I/O线程里做DB读写、日志记录这种不可控的阻塞行为,可能会引发客户端超时。 如何查看机器上所有的tcp连接? natstat -ant netstat -antp 如何统计time_wait 状态的连接? IP 包头大小? 20 字节 url.cn 是几级域名? -- 二级 www.qq.com?是几级域名? -- 三级 url.cn 可以CNAME到 demo.te.isc.demo-cloud.net 吗? 不建议这么操作,实际上很多场合是不可以这么操作的。 https://serverfault.com/questions/613829/why-cant-a-cname-record-be-used-at-the-apex-aka-root-of-a-domain 递归解析与迭代解析的区别? 先理解13组根DNS服务器、顶级域DNS服务器(各解析.com .net .gov 等)、权威DNS服务器、本地DNS服务器。 考虑浏览器客户端访问www.qq.com ,会向小区宽带的本地DNS查询域名解析IP ,而本地DNS会向根DNS、顶级域DNS、权威DNS逐个查询。 从客户端到本地DNS的查询是递归的;而其余的查询是迭代的。(参考《自顶向下理解计算机网络》89页) x-forwarded-for 与 remote_addr 的区别? X-Forwarded-For: client1, proxy1, proxy2 <proxy1>, <proxy2>如果一个请求经过了多个代理服务器,那么每一个代理服务器的IP地址都会被依次记录在内。也就是说,最右端的IP地址表示最近通过的代理服务器,而最左端的IP地址表示最初发起请求的客户端的IP地址。 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/X-Forwarded-For 鉴于伪造这一字段非常容易,应该谨慎使用X-Forwarded-For字段。正常情况下XFF中最后一个IP地址是最后一个代理服务器的IP地址 remote_addr 是通讯客户端与服务器实际进行TCP通信的IP IPv4地址分类 (IPv4地址32位) A 类 0.0.0.0/8 127.255.255.255 结束 B 类 128.0.0.0/16 191.255.255.255 结束 C 类 192.0.0.0/24 D 类 224.0.0.0~239.255.255.255 192.168.2.47/26 这个子网的开始IP 和结束IP是? (32-26)=6 , 2^6 = 64...
阅读全文

推荐文章 专题文章 随机文章

  • 博客网页导致电脑CPU飙升的问题解决记录
  • 博客集成Hitokoto·一言经典语句功能
  • 澳门威尼斯人娱乐官网发布/更新文章、提交/审核评论自动清理阿里云CDN缓存
  • 解决网站静态缓存后WP-PostViews插件不计数的问题
  • 利用HSTS安全协议柔性解决全站HTTPS的兼容性问题
  • 百度嵌入式站内搜索https化实践分享
  • 分享一个Nginx正向代理的另类应用案例
  • 解决网站404页面返回200状态码问题
  • 网站集成打字震动特效JS代码改进版
  • Haproxy进阶管理:命令行控制后端节点上下线
  • 小网站最简单实用的动静分离优化方案
  • Haproxy安装部署文档及多配置文件管理方案
  • 分享一个Nginx正向代理的另类应用案例
  • 解决网站404页面返回200状态码问题
  • 网站集成打字震动特效JS代码改进版
  • Haproxy进阶管理:命令行控制后端节点上下线
  • 小网站最简单实用的动静分离优化方案
  • Haproxy安装部署文档及多配置文件管理方案