阿小信大人的头像
Talk is cheap. Show me the code. Linus Torvalds

lua 获取 nginx get 请求中的数组参数的坑2021-05-13 18:41

lua 在 nginx 里面获取 http get 请求的 url 数组参数时有个小坑需要特别注意。

线上的 get 请求传数组参数的形式让人眼花缭乱:

:::url
?p=v1&p;=v2
?p[]=v1&p;[]=v2
?p[0]=v1&p;[1]=v2

三种形式都有,然后 lua 的坑在于获取没有数组下标的数组参数的时候,数据格式可能不一样...导致程序异常。

lua 在 nginx 里面获取到的是:

:::text
raw: ?p=v1&p;=v2 -> {"p":["v1","v2"]}

......
#Linux/Mac#   #nginx 评论[0]阅读全文[889]

Nginx + Lua + Redis 实现基础的令牌桶算法限流2020-06-16 17:30

image

## 关于令牌桶( token bucket )

令牌桶限流的原理是系统以一个恒定的速度往固定容量的桶里放入令牌,当有请求进来时,需要先从桶里获取并消耗一个令牌,当桶里没有令牌可取时,则拒绝服务或让请求等待。

如图:

![image](https://user-images.githubusercontent.com/2876405/84757479-cb8c3300-aff6-11ea-9be7-7d941ce1a2df.png)

每隔 1/r 秒向 bucket 中填充一个 token ;
bucket 最多只能存放 b 个 token ,如果填充 token 时

......
#数据库#   #redis #nginx 评论[0]阅读全文[1344]

使用nginx-lua修改influxdb API的返回结构2017-12-13 19:05

有一个API平台服务,所有接口都通过API平台转发到实际的服务上,然后再把实际服务的结果返回给客户端,API平台的规范是所有实际服务的接口返回都要统一结构为

:::json
{
"code": 0,
"msg": "",
"data": {}
}

否则无法处理,现在使用influxdb提供的api,他的返回结构并不是API平台需要的结构,所以需要做一层代理转发请求并修改返回结果为API平台需要的结构。

采用openresty来实现这个需求,只需安装好openresty,然后编写一个配置文件即可实

......
#Linux/Mac#   #nginx 评论[0]阅读全文[3027]

Nginx load-balancing methods笔记2015-12-25 15:48

原文链接:

#### load-balancing和caching的好处

![](https://assets.wp.nginx.com/wp-content/uploads/2015/12/Datadog-2-1024x640.png)

- 分发请求负载,提高请求处理效率,减少请求失败
- 用多台服务器处理请求,单个服务器不会被打爆,用户的请求URL都是一样的
- Nginx的caching可以分担web server加载静态文件的压力,会让已经缓存了这些资源的服务器去加载

#### load-balancing的五种方法

![](https://asset

......
#Linux/Mac#   #nginx 评论[0]阅读全文[2527]

nginx特定的http状态码2015-06-12 11:52


**ngx_http_special_response**

:::text
494, request header too large
495, https certificate error
496, https no certificate
497, http to https
498, canceled
499, client has closed connection

![](http://blogpostpics.qiniudn.com/2015_06_12_11_51_36.jpeg)

......
#Linux/Mac#   #nginx 评论[0]阅读全文[2975]

Nginx+Flask配置upstream时需要在localtion中设置Host2014-12-01 13:39

环境是这样的:

Flask+Gunicorn+Nginx搭建的网站,有个邮件验证功能,发送出去一个链接,这个链接是通过

:::python
link = url_for('.verify', payload=payload, _external=True)

生成的,

nginx最开始配置如下:

:::nginx
upstream fy_com {
server 0.0.0.0:1248;

keepalive 600;
}

server {
list

......
#Python#   #flask #nginx 评论[0]阅读全文[2833]

Nginx配置-指令的执行顺序笔记2014-09-26 19:50

:::nginx
worker_processes auto;
daemon off;

events {
worker_connections 256;
}

http {

server {
listen 8080;

# nginx的请求处理阶段共有11个(依次是post-read、server-rewrite、find-config、rewrite、post-rewrite、preaccess、access、post-access、try-file、cont

......
#WEB/前端#   #nginx 评论[4]阅读全文[3728]

Nginx配置-变量笔记2014-09-18 14:53


:::nginx
worker_processes auto;
daemon off;

events {
worker_connections 256;
}

http {
geo $dollar {
default "$";
}

map $args $soo {
default 0;
debug 1;
bug 2

......
#WEB/前端#   #nginx 评论[0]阅读全文[2271]