创建Caddy Docker容器
创建并运行 run.sh
#!/bin/env bash
docker rm -f caddy
# $DOCKER_CONF是你存放caddy相关数据的映射目录
docker run -d --name caddy \
-p 8888:80 \
-p 8443:443 \...
安装luarocks
首先安装luarocks, 这是一个类似php的composer ,nodejs的npm 第三方包管理工具。
wget http://luarocks.org/releases/luarocks-2.0.13.tar.gz //下载,为了保持兼容性使用这个版本
tar -xzvf luarocks-2.0.13.tar.gz //...
限流算法
令牌桶算法
算法思想是:
令牌以固定速率产生,并缓存到令牌桶中;
令牌桶放满时,多余的令牌被丢弃;
请求要消耗等比例的令牌才能被处理;
令牌不够时,请求被缓存。
漏桶算法
算法思想是:
水(请求)从上方倒入水桶,从水桶下方流出(被处理);
来不及流出的水存在水桶中(缓冲),以固定速率流出;
水桶满后水溢出(...
Nginx从请求中获取文件名、顶级目录的方法
需要使用map和captured:
# Gets the basename of the original request
map $request_uri $request_basename {
~/(?<captured_request_basename>[^/?]*)(?:\...
因为今天公司网站的性能问题,使我再一次意识到学习nginx/openresty的必要性,我习惯的学习的方式是用于致学,因为我认为如果缺乏必要的应用场景,是很难真正"学会"一门技术的。使用的场景必须存在,否则只是屠龙之术,比如之前学习了Go语言,学完语法之后我也不知道准备拿来干嘛,写了一两个小脚本就废弃了,因为我开始学的时候就没想好用来做什么,自然没有足够的动...
server {
#... common definitions such as server, root
location / {
error_page 418 = @queryone;
error_page 419 = @querytwo;
error_page 420 = @querythr...
测试nginx代理转发时,遇到这样一个问题:
请求url:http://1.1.1.1:8080/testimp/abcd/123?a=1&b=2&ip_port=2.2.2.2:1234
要求nginx,使用参数ip_port重新转发,转发的url如下:http://2.2.2.2:1234/abcd/123?a=1&b=2&a...
nginx配置反向代理,报错:
2021/05/26 11:38:25 [error] 14030#14030: *5287204 SSL_do_handshake() failed (SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number) while SSL han...
为什么if是邪恶的?
if 指令在location里使用经常会出现不符合期望的情形,有时甚至会出现段错误(segfaults),这是因为if指令是重写模块的一部分,该模块命令式地计算指令。另一方面,NGINX配置是声明性的语言。但某些情况,由于用户的需要,会尝试在if中使用一些非重写指令。
这就导致了现在的情况。它总体上是有效的,不过有一些情况可能并不如...
为什么会有这样的需求呢?因为papay的ipn只支持一条url,而当多个网站都使用同一个paypal帐户收款,你就需要将ipn分发到多台服务器,这时就需要这种操作了,比如将 http://localhost/?stm_lms_check_ipn=1 的请求重放到 https://example.com 上。(有老外甚至为Paypal这个痛点做了付费服务?)...