ngx.resp.get_headers()

 lua, nginx  ngx.resp.get_headers()已关闭评论
8月 022017
 

 

syntax: headers = ngx.resp.get_headers(max_headers?, raw?)

context: set_by_lua*, rewrite_by_lua*, access_by_lua*, content_by_lua*, header_filter_by_lua*, body_filter_by_lua*, log_by_lua*, balancer_by_lua*

Returns a Lua table holding all the current response headers for the current request.

This function has the same signature as ngx.req.get_headers except getting response headers instead of request headers.

 

参考: https://github.com/openresty/lua-nginx-module#ngxrespget_headers

注意: 字段名都会转换成小写

 Posted by at 下午 2:27

syslog协议之PRI解析

 rsyslog, 默认分类  syslog协议之PRI解析已关闭评论
5月 272017
 

syslog协议的第一部分是尖括号引用的一个数字,如: <182>

该数字大小范围为: 0 ~ 255, 为1个字节表达的数字,包含两部分内容:

低三位: (0 ~ 7)称作: Severity

 

高5位(右移3位后): (0 ~ 31)称作:Facility

 

根据尖括号中的数字还原上面两个部分的方法,以 182 为例:

即: local6的information

 

参考:https://tools.ietf.org/html/rfc3164#section-4.1.1

 Posted by at 下午 2:59

关于tcp代理与keepalive

 haproxy, nginx, 代理  关于tcp代理与keepalive已关闭评论
11月 172016
 

关于tcp代理涉及3个实体:

c: client

p: proxy

s: server

 

c  <—–> p <—–> s

c 和 p建立tcp连接, p 和 s 建立tcp连接;

对于tcp来讲,很可能不是http那样ask and answer then close的, 很有可能连接上长时间没有数据,那么会出现什么问题呢?

  1. 假如 c 和 p 之间的网线短了, c 不可能再关闭这个连接了,那么p如何释放这个连接呢?
    1. p 在该连接上设置keepalive,定期检查连接是否断开,一般系统设置的间隔时间为2小时
    2. 一定程度上,c也关心这个长时间没有使用的连接是否依然可用,那么,c也可以在该连接上设置keepalive
  2. 问题:
    1. p 是否会转发c 的keepalive 数据包?
      1. p 是tcp(传输层)的代理,只有接到数据才会转发,没有数据不会转发
      2. keepalive 实际上是一个数据长度为0的ip数据包
      3. 所以: p 不会转发keepalive
    2. 既然p不会转发keepalive,那么如果p和 s 之间的链路出现问题,c 将不知道其实连接已经不可用了,然后就会数据发送失败

总结:

  1. p 有必要和c、s keepalive
 Posted by at 下午 12:02

tinyproxy源码学习

 代理  tinyproxy源码学习已关闭评论
11月 052016
 
  1. 解析request_line 时,使用sscanf (php中也有该函数)
  2. upstream可以设置upstream代理,如: client要请求phpor.net,tinyproxy中可以配置如果client请求的是phpor.net,则请求proxy.phpor.net,而不是代理请求phpor.net
  3. remove_connection_headers 中定义了上行请求的请求头中包含的connection要去掉,如: connection,proxy-connection
 Posted by at 下午 11:19

nginx 配置点滴

 nginx  nginx 配置点滴已关闭评论
10月 192016
 
  1. 重定向
    1. rewrite可以重定向
    2. return 301 $url; 也能重定向,简单的重定向使用return 301更简介,如,强制访问443端口,80段定义如下:

       
  2. return 301 $url ; 不同于 return $url ;
    1. 后者不会导致页面跳转,而是服务器端代为请求了
  3. location = / 不能嵌套在其他的location中,虽然逻辑上似乎合理,但是执行不到
  4. nginx中常用的变量: http://nginx.org/en/docs/varindex.html
  5. lua openresty https://github.com/openresty/lua-nginx-module

关于location:

  1. location之间是互斥的,可以嵌套,但不可以继承,如:
    1. location / 嵌套在 location / 中,虽然没有语法错误,但是,内层的location不会被执行到
    2. location /sub 嵌套在 location / 中时,如果匹配到了location sub 则location / 里面 ,location /sub 外面的逻辑不会被执行到,这就是我所谓的不可以继承,效果等同于并列的两个location
 Posted by at 下午 1:58

svn to gitlab

 git  svn to gitlab已关闭评论
8月 292016
 

手动在gitlab上创建git仓库: http://gitlab.phpor.net/phpor/svn2gitlab.git

 

 

 Posted by at 下午 5:00

etcd 的访问控制

 etcd  etcd 的访问控制已关闭评论
8月 152016
 

https://coreos.com/etcd/docs/latest/auth_api.html

auth enable 之前必须添加root用户,添加时设置密码:

开启认证:

添加一个非特权账号:(注意,这时候就需要有权限的用户来操作了)

查看有哪些账号:

添加角色:

给角色添加能力:

通过 –help 查看用法:

注意,这里只添加了 /test1 的读写权限,不包含其子目录(文件),如果需要包含,请这么写:

查看有哪些角色了:

查看指定角色的权限:

将用户添加到角色:

查看用户拥有哪些角色:

列出etcd中的所有key:(-p 选项在目录的后面添加 /)

关于用户的更多操作:

 

 

 

 

 Posted by at 上午 1:33