angie NS托管自动维护泛域名ssl证书体验感

用了一段时间,发现angie的ns托管方式,签发ssl成功率并不太高,经常出现找不到TXT记录的问题。

Tmux 快捷键 & 速查表 & 简明教程

注意:本文内容适用于 Tmux 2.3 及以上的版本,但是绝大部分的特性低版本也都适用,鼠标支持、VI 模式、插件管理在低版本可能会与本文不兼容。

Tmux 快捷键 & 速查表 & 简明教程

启动新会话:

tmux [new -s 会话名 -n 窗口名]

恢复会话:

tmux at [-t 会话名]

列出所有会话:

tmux ls

关闭会话:

tmux kill-session -t 会话名

关闭所有会话:

tmux ls | grep : | cut -d. -f1 | awk '{print substr($1, 0, length($1)-1)}' | xargs kill

在 Tmux 中,按下 Tmux 前缀 ctrl+b,然后:

会话

:new<回车>  启动新会话
s           列出所有会话
$           重命名当前会话

窗口 (标签页)

c  创建新窗口
w  列出所有窗口
n  后一个窗口
p  前一个窗口
f  查找窗口
,  重命名当前窗口
&  关闭当前窗口

调整窗口排序

swap-window -s 3 -t 1  交换 3 号和 1 号窗口
swap-window -t 1       交换当前和 1 号窗口
move-window -t 1       移动当前窗口到 1 号

窗格(分割窗口)

%  垂直分割
"  水平分割
o  交换窗格
x  关闭窗格
⍽  左边这个符号代表空格键 - 切换布局
q 显示每个窗格是第几个,当数字出现的时候按数字几就选中第几个窗格
{ 与上一个窗格交换位置
} 与下一个窗格交换位置
z 切换窗格最大化/最小化

同步窗格

这么做可以切换到想要的窗口,输入 Tmux 前缀和一个冒号呼出命令提示行,然后输入:

:setw synchronize-panes

你可以指定开或关,否则重复执行命令会在两者间切换。 这个选项值针对某个窗口有效,不会影响别的会话和窗口。 完事儿之后再次执行命令来关闭。帮助

调整窗格尺寸

如果你不喜欢默认布局,可以重调窗格的尺寸。虽然这很容易实现,但一般不需要这么干。这几个命令用来调整窗格:

PREFIX : resize-pane -D          当前窗格向下扩大 1 格
PREFIX : resize-pane -U          当前窗格向上扩大 1 格
PREFIX : resize-pane -L          当前窗格向左扩大 1 格
PREFIX : resize-pane -R          当前窗格向右扩大 1 格
PREFIX : resize-pane -D 20       当前窗格向下扩大 20 格
PREFIX : resize-pane -t 2 -L 20  编号为 2 的窗格向左扩大 20 格

文本复制模式:

按下 PREFIX-[ 进入文本复制模式。可以使用方向键在屏幕中移动光标。默认情况下,方向键是启用的。在配置文件中启用 Vim 键盘布局来切换窗口、调整窗格大小。Tmux 也支持 Vi 模式。要是想启用 Vi 模式,只需要把下面这一行添加到 .tmux.conf 中:

setw -g mode-keys vi

启用这条配置后,就可以使用 h、j、k、l 来移动光标了。

想要退出文本复制模式的话,按下回车键就可以了。然后按下 PREFIX-] 粘贴刚才复制的文本。

一次移动一格效率低下,在 Vi 模式启用的情况下,可以辅助一些别的快捷键高效工作。

例如,可以使用 w 键逐词移动,使用 b 键逐词回退。使用 f 键加上任意字符跳转到当前行第一次出现该字符的位置,使用 F 键达到相反的效果。

vi             emacs        功能
^              M-m          反缩进
Escape         C-g          清除选定内容
Enter          M-w          复制选定内容
j              Down         光标下移
h              Left         光标左移
l              Right        光标右移
L                           光标移到尾行
M              M-r          光标移到中间行
H              M-R          光标移到首行
k              Up           光标上移
d              C-u          删除整行
D              C-k          删除到行末
$              C-e          移到行尾
:              g            前往指定行
C-d            M-Down       向下滚动半屏
C-u            M-Up         向上滚动半屏
C-f            Page down    下一页
w              M-f          下一个词
p              C-y          粘贴
C-b            Page up      上一页
b              M-b          上一个词
q              Escape       退出
C-Down or J    C-Down       向下翻
C-Up or K      C-Up         向下翻
n              n            继续搜索
?              C-r          向前搜索
/              C-s          向后搜索
0              C-a          移到行首
Space          C-Space      开始选中
               C-t          字符调序

杂项:

d  退出 tmux(tmux 仍在后台运行)
t  窗口中央显示一个数字时钟
?  列出所有快捷键
:  命令提示符

配置选项:

# 鼠标支持 - 设置为 on 来启用鼠标(与 2.1 之前的版本有区别,请自行查阅 man page)
* set -g mouse on

# 设置默认终端模式为 256color
set -g default-terminal "screen-256color"

# 启用活动警告
setw -g monitor-activity on
set -g visual-activity on

# 居中窗口列表
set -g status-justify centre

# 最大化/恢复窗格
unbind Up bind Up new-window -d -n tmp \; swap-pane -s tmp.1 \; select-window -t tmp
unbind Down
bind Down last-window \; swap-pane -s tmp.1 \; kill-window -t tmp

参考配置文件(~/.tmux.conf):

下面这份配置是我使用 Tmux 几年来逐渐精简后的配置,请自取。

# -----------------------------------------------------------------------------
# Tmux 基本配置 - 要求 Tmux >= 2.3
# 如果不想使用插件,只需要将此节的内容写入 ~/.tmux.conf 即可
# -----------------------------------------------------------------------------

# C-b 和 VIM 冲突,修改 Prefix 组合键为 Control-Z,按键距离近
set -g prefix C-z

set -g base-index         1     # 窗口编号从 1 开始计数
set -g display-panes-time 10000 # PREFIX-Q 显示编号的驻留时长,单位 ms
set -g mouse              on    # 开启鼠标
set -g pane-base-index    1     # 窗格编号从 1 开始计数
set -g renumber-windows   on    # 关掉某个窗口后,编号重排

setw -g allow-rename      off   # 禁止活动进程修改窗口名
setw -g automatic-rename  off   # 禁止自动命名新窗口
setw -g mode-keys         vi    # 进入复制模式的时候使用 vi 键位(默认是 EMACS)

# -----------------------------------------------------------------------------
# 使用插件 - via tpm
#   1. 执行 git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
#   2. 执行 bash ~/.tmux/plugins/tpm/bin/install_plugins
# -----------------------------------------------------------------------------

setenv -g TMUX_PLUGIN_MANAGER_PATH '~/.tmux/plugins'

# 推荐的插件(请去每个插件的仓库下读一读使用教程)
set -g @plugin 'seebi/tmux-colors-solarized'
set -g @plugin 'tmux-plugins/tmux-pain-control'
set -g @plugin 'tmux-plugins/tmux-prefix-highlight'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tpm'

# tmux-resurrect
set -g @resurrect-dir '~/.tmux/resurrect'

# tmux-prefix-highlight
set -g status-right '#{prefix_highlight} #H | %a %Y-%m-%d %H:%M'
set -g @prefix_highlight_show_copy_mode 'on'
set -g @prefix_highlight_copy_mode_attr 'fg=white,bg=blue'

# 初始化 TPM 插件管理器 (放在配置文件的最后)
run '~/.tmux/plugins/tpm/tpm'

# -----------------------------------------------------------------------------
# 结束
# -----------------------------------------------------------------------------

转载自:https://gist.github.com/ryerh/14b7c24dfd623ef8edc7

angie acme proxy_pass DNS-01 验证

angie自动签发ssl配置

acme_client 99999_net https://acme-v02.api.letsencrypt.org/directory challenge=dns;
server {
    listen unix:/run/acme-99999_net.sock;
    server_name 99999.net *.99999.net;
    acme 99999_net;
    location @acme_hook_location {
        acme_hook 99999_net uri=/angie.php;
        proxy_pass http://API.SERVER;
        proxy_read_timeout 560s;
        proxy_send_timeout 560s;
        proxy_set_header X-Acme-Hook $acme_hook_name;
        proxy_set_header X-Acme-Challenge $acme_hook_challenge;
        proxy_set_header X-Acme-Domain $acme_hook_domain;
        proxy_set_header X-Acme-Keyauth $acme_hook_keyauth;
    }
}

angie官方只写了fastcgi和php-fpm的配置,这里补全一下proxy_pass调用api的方式

示例参数说明:

99999.net是域名

99999_net是acme name (acme签发只签发ssl可以直接用域名,但是网站里面ssl_certificate维护的时候变量无法识别.必须用下划线_才能识别)

API.SERVER是接口服务器地址

uri=/angie.php是api接收具体uri地址

proxy_pass暂时只能走http, 走https会请求不到可能要用ngx_http_tunnel_module模块走tunnel_pass localhost:9000;

这里的server和 listen unix:/run/acme-99999_net.sock; 是http下的字段,用于专门管理acme,这里用server字段管理可以单独签证书, 也可以在 网站的server字段下加location字段 @acme_hook_location, 可以查看官方文档https://cn.angie.software/angie/docs/configuration/acme/#acme-config-hooks-minimal-configuration

X-Acme系列header是传送参数,这里用header方式,也可以走uri个get方式,但会造成明文泄露的问题.

HTTP_X_ACME_DOMAIN是请求的根域名,HTTP_X_ACME_KEYAUTH是_acme-challenge.99999.net的TXT值
 
$_SERVER['HTTP_X_ACME_HOOK']是传送remove和add动作,根据这个参数添加或者删除记录
 
API SERVER对子域名_acme-challenge添加删除TXT记录就行了,其他没有什么特殊设置了。
 
 

另外一种angie DNS托管方式验证方法:

acme_client 99999_net https://acme-v02.api.letsencrypt.org/directory challenge=dns;
server {
    listen unix:/run/acme-99999_net.sock;
    server_name 99999.net *.99999.net;
    acme 99999_net;
}
 
第一步:解析一个A记录 例如 ns111.99999.net 到当前的angie公网IP,并开放53 UDP端口对外访问
第二步:设置_acme-challenge.99999.net一个NS记录到ns111.99999.net就可以托管到angie内部自动管理。
 
 
两种方式对自动内部管理签发通配符SSL证书方便,DNS托管模式只能单机验证,用API方式的好处能多个不同地方的angie可以独立管理ssl。如果没有通配符SSL需求直接用alpn方式就能满足需求.

 

网站配置和正常的一样:

upstream host_1 {
    zone host_1 64k;
    server 99.99.99.99:6680;
}

server {
    listen 80;
    server_name 99999.net *.99999.net;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    listen 443 quic;
    http2 on;
    http3 on;
    server_name 99999.net *.99999.net;
    status_zone host_1;
    ssl_certificate     $acme_cert_99999_net;
    ssl_certificate_key $acme_cert_key_99999_net;
    add_header Alt-Svc 'h3=":443"; ma=86400' always;
    gzip on;
    gzip_proxied any;
    gzip_vary on;
    gzip_types text/plain text/css text/xml application/json application/javascript application/xml application/rss+xml application/atom+xml image/svg+xml font/ttf font/otf application/vnd.ms-fontobject;
    location / {
        proxy_pass http://host_1;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    }
}

 

最后,angie直接官方包直接支持js和lua安装后就能用,比原来的nginx和openresty更好用,具体更多细节查看官方文档https://cn.angie.software/angie/docs/installation/oss_packages/#oss-packages

另外域名太多的情况下可以考虑DCV域名指派方案(Domain Control Validation)。

年少轻狂的人到了35岁一个个都统一老实了

年少轻狂的时候兜里掏不出富余的几百千来块钱,觉得几十百来万是小钱。

面对 现金流、税、房租、工资、社保、坏账、库存、设备、融资成本、折旧、养老、抚育、医疗、住房、婚嫁、人情世故各种问题后一个个都老实不语了;

之前那种不可一世不愿意总觉得和人有代沟的棱角也被磨平了,发现整个社会根本不会随便迁就自己, 也愿意主动迁就人了。