from:阅心笔记
对于nginx多https站点通常的做法是这样:server 443 ssl; server_name nixops1.me; ssl_certificate /usr/local/nginx/keys/nixops1.me.crt; ssl_certificate_key /usr/local/nginx/keys/nixops1.me.key; …… 如果有多个https站点,就是每个站点复制一份这个配置。如nixops2.me、nixops3.me等等,在只有几十个https站点的时候还好,如果某个站点的域名特别多,例如有几千个域名甚至上万个域名的时候,这个配置就很恐怖了,需要精简并合并配置。下面举例说明,假设应用场景为:同一站点有大量域名需要配置https证书,其它配置一样每个之证书都是泛域名证书,如let’…
通过nginx反向代理实现内网yum源
7月 26日, 2020年 自建机房为了节省公网流量都会有内网的yum源,对于自动化程度比较高,软件标准化和准入做的比较好的情况下,常用软件会打成rpm包放进内网源里,很多基础软件和依懒也都会打包进系统模板中。其实多数情况下,需要从yum源里更新的包不多,不需要将整个centos源都同步进内网源里。可以通过nignx反向代理用偷懒的方式实现一个yum源。我们先来看看yum的工作流程:服务器请求根据自己的系统版本、架构、依次请求各启用的源中的repomd.xml文件repomd.xml中保存了软件仓库中的metadata,也就是“元数据”,这些数据包含了该软件仓库内所有软件包的包名及其所需的依赖环境、软件包里文件列表等信息yum或dnf下载了metadata后,将这些信息和本地环境对比,进而确认需要安装哪些rpm包,并在用户确认后开始安装或更新一般Yum…
linux文件描述符和IO重定向
7月 24日, 2020年 一、文件描述符在linux和unix系统中,一切都是文件,内核是通过文件描述符来访问文件,文件描述符是非负整数,最大值受系统最大可打开的文件数限制。可以使用命令查看:ulimit -a查看open files的值,默认是1024。二、标准流先来看看维基百科中标准流的定义: 在linux和unix系统中,一个程序运行时和环境交互(INPUT/OUTPUT)的通道,叫标准流。对于Linux下的进程,每个进程都有三个标准的文件描述符,对应于三个标准流:标准输入:文件描述符为 0,对应标准流 stdin ,对应设备为键盘标准输出:文件描述符为 1,对应标准流 stdout,对应设备为显示器标准错误:文件描述符为 2,对应标准流 stderr,对应设备为显示器linux下的用户都是通过终端进行交互,如bash、sh、…
使用lego签发Let’s Encrypt的证书
7月 23日, 2020年 五年前Let‘s Encrypt还不支持泛域名证书,我这个懒人为了省事,一下子买了五年的wildcard证书。截止到2020年7月22日,Let’s Encrypt已经有近六千四百万活跃的域名,有一亿三千六百万个证书,每天签发近一百五十万次。最重要的是证书全部是免费的,经过这几年的发展,Let‘s encrypt已经是目前互联网最重要的组织之一。而且周边和教程都已经非常成熟了,客户端就有几十种。我的网站要求就两点,一是能支持签发和续签widlcard证书,第二就是要使用简单,最终综合比较了一下选择了Lego。Lego是Go语言写的,使用之前要先安装GoLang。 一、安装GoLang 从官网下载go语言相应版本的客户端,解压安装即可,需要注意以下两点:Linux系统下不要安装多个版本的GO需要正确设置GOROOT和环境变量。不然编译l…
使用systemtap进行抓包
7月 22日, 2020年 systemtap是一个监控追踪系统调用、调试内核的工具,可以在系统运行时动态的调试内核,可以说是内核开发者必须要掌握的工具。我使用这个工具是因为线上的应用存在fastjson的漏洞,被黑客执入了木马,在骨干交换机上抓到异常流量后,确定了内网服务器IP,登录服务器后使用lsmod、ps、netstat、ss、lsof这些命令无法发现异常,甚至连tcpdump都无法抓到这个木马,猜测是rootkit木马加载了内核模块、实现了无文件、无进程,只有每20分钟一次的心跳包,想揪出来非常困难。 一、安装 编译是比较麻烦的,centos base源里就有systemtap,主要有三个依赖:kernel-debuginfo 在CentOS-Debuginfo源里,默认没启用elfutilskernel-devel ,和 elfut…
tomcat多功能启动脚本
7月 20日, 2020年 tomcat bin目录下已经有了启动、关闭的脚本,写这个脚本主要是为了方便自动化运维,把tomcat和jdk推到服务器上解压后,把这个脚本传到PATH目录下,改个名字,给个执行权限就可以了,可以少设置很多东西,同时功能更加丰富。主要有以下几点功能:只需配置JDK目录和tomcat目录即可,无需设置全局JDK环境变量和setenv.sh可以指定tomcat启动运行的用户系统中有多个tomcat时,可以公用一个脚本每次启动tomcat都会先检查目录权限和清理临时目录,并调整ulimit,防止应用使用缓存和出现性能问题可以查看tomcat运行详细情况,cpu/内存/RSS/VSZ/运行时间等可以使用本脚本tail输出 catalina.out安全停止tomcat,先正常关闭tomcat,等待一段时间后kill,确保tomcat能够关闭可以…
nginx两种实用的自定义访问日志格式
7月 18日, 2020年 第一种 程序友好型json格式: log_format json_format escape=json ‘{“@timestamp”:”$time_iso8601″,’ ‘”client_ip”:”$remote_addr”,’ ‘”client_region”:”$ipdb_raw”,’ ‘”request_method”:”$request_method”,’ ‘”request_scheme”:”$scheme”,’ ‘”request_host”:…
博客启用新域名
7月 8日, 2020年 一晃自己工作八年了,这个博客也长了很久的草。近两年每年只写了一篇文章,其实东西没少折腾,但就是不愿意花时间写技术文章,在更新博客上懒了很多。这几年工作和生活都发生了很多事,杂事很多,劳心伤神,记忆力也下降的厉害。很多时候下班回家后只想放空自己,什么都不想干,这个博客可能后续更新也会十分缓慢,看情况吧。最近疫情在家刚好事情不多,收拾一下长草的博客。上次买了五年的https证书过期后一直没有处理,导致博客很久不能正常打开。这次索性买了一个新的域名,证书换成了免费的Let’s Encrypt,写了个脚本设置自动更新,以后也不操心了。新域名是nixops.me,有两层寓意:*nix + ops,*nix是类unix系统,ops是运维的意思,和自己的职业相关Nix 作为名词是无、没有的意思,小米公司运维博客说:Ops的目标是没有Ops,我深以为然美中不足,nix…
发表回复