BLCL的博客小馆

归档 · 全部

首页

关于

归档

记一次修复生产环境中 nginx 出现的 SNI 相关的问题

前段时间,我司出现了一次生产事故,调查后发现是当时的 OpenResty 配置不兼容 SNI 导致的。在这里我也记录一下整件事的排查过程,以及解决方法,供遇到类似问题的同志们参考。 事故症状某天开始,我司的 OpenResty 日志中大量出现 SSL 握手失败的错误,并影响了正常的业务。查看 OpenResty 日志,看到有大量这样子的报错: 1232021/10/19 20:51:30 [warn] 16776#16776: *1110324 upstream server temporarily disabled while SSL handshaking to upstream, client: [MASKED], server: localhost, request: "GET /endpoi..

更多
loading..

微信小程序 scroll-view 填满剩余可用高度

根据微信小程序 scroll-view 文档所述,scroll-view 必须给定一个固定高度。那么如果我们想要让它自动填充剩余高度,该怎么办呢? 前言在说出我的解决方案之前,先来看一下我的页面设计,以便于理解。 如图所示,我将这个页面分成了三部分:最顶部的导航栏 navbar,用于显示概要信息的 header,以及本文的主角 scroll-view。可见,scroll-view 位于页面的最下方,如果我直接给它设定一个固定的高度,那么在不同尺寸的屏幕上,就可能会有高度过小而在下方留白,或者高度过大超出屏幕下边界的可能。那么,自动计算 scroll-view 的高度,看起来是一个可行的办法。 思路有了,接下来就开始挑趁手的工具吧! 需要的 API首先,在计算过程中,整个页面的高度是必须要有的。而小程..

更多

在群晖的 Docker 环境中运行甜糖星愿服务

前段时间在网上看到了一个叫 “甜糖星愿计划” 的东西,声称可以通过贡献闲置带宽来获得积分。正好我有个 NAS,正好我的宽带一天从白天闲到黑夜,不如利用起来,少少挣一些零花钱。 需要注意的一点是,本文提到的镜像仅在我的群晖DS218+ 上测试过,虽然镜像中未使用任何群晖限定的依赖,理论上适用于任何 x86 架构的平台,但并不保证运行效果。而且本文目标平台是 x86,如果你拥有 ARM 平台的机器,那根本不需要废这个劲,你可以直接运行甜糖星愿的可执行程序。 本文提到的操作全部基于 Docker,故在按照本文操作前,请先确保你已经拥有足够的知识来使用 Docker 和 docker-compose。 我的网络环境因为这个镜像相关的一些配置是以我的网络结构为基础的,所以我觉得有必要简单说一下我的网络结构是什么..

更多
loading..

记一次抢救被 force push 的 GitHub 仓库

就在刚刚,我一个误操作,在没有本地备份的前提下,force push 了一个 GitHub 上的仓库。万幸最后恢复成功,数据拿回来了。惊魂未定之余,在此记录我的抢救过程以供参考。 前景提要在闲逛 GitHub 的时候,发现了一个叫 snk的项目,可以在我的 profile readme 里面放个贪吃蛇,遂照着它的 example with cron job抄了一个 workflow 过来。但是这里我自作聪明地想着把东西全放在 master 上,就把 38 行的 target_branch 改成了 master。结果一运行吓一跳,我的 README.md 没了,仓库只剩下 snk 生成的 svg 文件。这不行啊,我花了好久的时间才整出来的东西,不能说没就没啊!于是赶紧开始网上冲浪,看怎么抢救被 forc..

更多

让 nohup 不输出 appending output to 'nohup.out'

在使用 nohup 的时候,它总会打印一条 nohup: appending output to 'nohup.out' 这样的信息,并且必须敲一下回车。 因为 nohup: appending output to 'nohup.out' 这条信息是打印到 STDERR 的,所以解决的方法很简单,把 STDERR 重定向至 STDOUT 就可以了,比如这样: 1nohup doSomething > nohup.out 2>&1 &

更多

使用 SSH config 简化 SSH 连接

如果你有很多的服务器要连接,如果对你来说记住那些服务器的地址、端口实在是一种痛苦,如果你一直在寻找一种能够简化在命令行下连接 SSH 服务器的办法,那么,本文将给你提供一种解决问题的思路,那就是,使用 SSH 的 config 文件。 SSH config 文件是什么Open SSH 客户端配置文件,允许你以配置项的形式,记录各个服务器的连接信息,并允许你使用一个定义好的别名来代替其对应的 ssh 命令参数。 SSH config 文件该怎么用创建 SSH config 文件通常来说,该文件会出现在两个地方,一个是 /etc/ssh/ssh_config,一个是 ~/.ssh/config。 /etc/ssh/ssh_config 文件通常用来定义全局范围上的 SSH 客户端参数,而 ~/.ssh/c..

更多

在 Spring Boot 应用中启用 HTTPS

在 application.yml 中添加如下配置,即可在 Spring Boot 项目中开启 HTTPS。 12345678910111213server: # 如果有需要的话,配置应用监听HTTPS的默认端口 port: 443 ssl: # 我把证书放在了 resources/cert/certificate.pfx下 # 使用时需要按照实际情况修改下面的路径 key-store: classpath:cert/certificate.pfx key-store-password: pA55w0Rd # 证书类型需要按照实际类型填写 # 本例使用PKCS12格式,所以写PKCS12。如果是JKS格式,那么需要填写JKS # 因为PKCS12比JKS有更..

更多

在 Spring 中通过配置类注入配置文件的值

我们在开发过程中,为了保证项目的灵活性,经常会选择将一些值放在配置文件中,并在代码中将它注入并使用。将值注入代码最常见的一种方法,则是使用 @Value() 注解搭配 SpEL 直接注入我们需要的属性。但是鲁迅先生有云:从来如此,便对吗?这里,我想介绍一个我个人认为更好的实践:通过配置类来注入属性的值。 旧的做法有什么问题假设我们现在有这样一个 application.yml,其中 credentials 部分是我自定义的一个属性: 12345server: port: 9999credentials: token: A_VERY_SECRET_TOKEN 然后,我们会在用到它的地方,直接通过 @Value 注解把它注入进来,就像这样: 123456@Componentpublic class ..

更多

Shell 脚本中 set -ex 命令的作用

刚刚学会了一个很实用的 shell 命令 set -ex,在这里分享一下。 稍有常识的人都能看出,这是 set 命令加上了 -e 和 -x 两个参数 (废话么这不是)。那么,我就把这两个参数拆开,分别说一下它在脚本中的用处。 set -e先说说 set -e,这个参数的含义是,当命令发生错误的时候,停止脚本的执行。 通常来说,我们会习惯于使用 && 来实现这样的功能,比如: 123#!/bin/bashecho 1 && rm non-existent-file && echo 2 但是,写成一行呢,可读性有点差,分成多行的话,也得注意换行符 \ 和 && 号,我就有过好几次忘了加这俩东西,还是挺麻烦的是吧。 更麻烦的是,&&a..

更多

分环境为 Git 指定单独的配置

有的小伙伴,在公司需要使用公司的 Git 来干活,同时自己也有些托管在 GitHub 等其他仓库的代码,在这种情况下会有一个烦恼,就是怎么样在多个仓库之间使用不同的配置。比如在公司仓库和个人仓库之间使用不同的身份信息,或者在公司仓库和个人仓库之间,使用不同的 GPG 签名。 在 2.13 版本之前,大概你就只能单独为每一个仓库单独设定这些信息了,但是,在 2.13 这个版本中,Git 引入了一个名为 “按条件引入”(Conditional includes) 的功能。这个功能允许用户通过指定一定的条件,来使 Git 从不同的配置文件中取得配置项。 准备工作“按条件引入” 功能可以根据目录或者分支来决定使用哪个配置,显然根据分支无法区分工作环境和私人环境,所以首先需要分别为工作环境和私人环境创建各自的目..

更多
1333435363777