JouyPub

  • 首页

  • 归档

  • 区块链

  • BigData

  • Linux

  • Git手册

  • MySQL

  • Nginx

  • 科学上网

  • 搜索

Openresty获取请求参数

发表于 2019-11-20 | 分类于 Nginx | 阅读次数:
  1. GET请求,获取url上的参数

    1
    2
    3
    4
    5
    6
    7
    -- url: ?username=abc

    -- 方法一
    local username = ngx.var.arg_username

    -- 方法二
    local strider = ngx.req.get_uri_args["username"]
  2. POST请求,获取url-formdata中的参数

    1
    2
    3
    ngx.req.read_body()
    local args = ngx.req.get_post_args()
    local username = args["username"]
  3. POST请求,获取json中的参数

    1
    2
    3
    4
    local cjson = require('cjson')
    ngx.req.read_body()
    local args = cjson.decode(ngx.req.get_body_data())
    local username = args["username"]

Openresty中nil、null和ngx.null的区别

发表于 2019-11-12 | 分类于 Nginx | 阅读次数:

由于没有保留现场,本文直接转载另一篇文章做参考:https://pureage.info/2013/09/02/125.html

问题概述
 今天第一次在nginx+lua架构下,写了个需要操作Redis的后台接口,但是在判断空值时,结果和预期不一样

主要代码如下

1
2
3
4
local md5,err=red:hget(tasklist,"md5")  
if md5 and md5 ~= "" then
tb.md5=md5
end

当md5不为空时才赋值,如果为空就过滤掉,可实际结果是md5为空,但是仍然执行了tb.md5=md5,然后猜测是不是null字符串导致的,于是将上面的几行代码改为:

1
2
3
4
local md5,err=red:hget(tasklist,"md5")  
if md5 and md5 ~= “null” then
tb.md5=md5
end

仍然过滤失败,再次猜测可能是类型不对导致的

1
ngx.say("type of null is "..type(md5))

阅读全文 »

Openresty修改日志access.log中的时间格式

发表于 2019-11-05 | 分类于 Nginx | 阅读次数:

在OpenResty的access.log中,默认的时间格式是[13/Dec/2019:13:42:53 +0800],对于这种时间格式,不便于识别。所以打算修改成[2019-12-13 13:42:53]这种便于识别的格式

方法有两种,一种是修改源码,然后重新编译,现在不考虑。另一种是新增一个日期函数。

  1. 在http模块下新增一个日期函数

    1
    2
    3
    log_by_lua_block {
    ngx.var.fmt_localtime = ngx.localtime();
    }
  2. 配置日期函数

    1
    2
    3
    map $host $fmt_localtime {
    default '';
    }
  3. 使用该函数

    1
    2
    log_format  main  '$remote_addr[$http_x_forwarded_for] [$fmt_localtime] "$http_host" "$content_type" "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';
    access_log logs/access.log main;
阅读全文 »

Linux find和cp连用

发表于 2019-10-28 | 分类于 Linux | 阅读次数:

场景:
拷贝指定目录下的部分文件到另外一个目录,如果是简单的前缀或者后缀匹配可以通过*.conf等类似的方式来操作,但是如果有更复杂的需求,比如排除一些文件,只拷贝文件,简单的cp已经不能胜任了,就需要配置find一起使用

两个命令连用,第一个想到的就是xargs,但是这里有点区别,xargs默认会把上一个命令的执行结果带入到下一个命令的末尾,这样在使用cp时就有问题了,举例说明:

1
2
3
4
> find /data/ -type f -name "*.txt" | xargs cp ./dist

# 实际结果是
> find /data/ -type f -name "*.txt" | xargs cp ./dist #{find的结果}

这样执行结果会报错,和预期是相反的

阅读全文 »

OpenResty配置免费的HTTPS证书

发表于 2019-10-20 | 分类于 Nginx | 阅读次数:

如果是Nginx,可以参考上一篇文章Nginx配置永久免费的SSL证书,由于cerbot自带nginx的插件,所以nginx的话,一个命令就完成了,但是在使用operensty时,操作上还是有点差异

1、安装certbot

1
> yum install certbot

2、在openresty的根目录下新建.well-known的目录,如果是默认安装,根路径是/usr/local/openresty/nginx/html/

1
2
> cd /usr/local/openresty/nginx/html/
> mkdir .well-known

3、在openresty的server配置中新增.well-known/的访问路径

1
2
3
location /.well-known/ {
root /usr/local/openresty/nginx/html;
}

阅读全文 »

awk中使用substr截取字符串

发表于 2019-10-05 | 分类于 Linux | 阅读次数:

解释:
substr($0,2) : 从字符串中的的第2个字符开始,直到结尾
substr($$0,2,10) : 从字符串中的的第2个字符开始,到第10个字符

示例:

1、截取固定字符串

1
> echo "this is a test,test" |awk -F ',' '{print substr($1,1,4)}'

2、根据字符串长度截取字符串

1
> echo "this is a test,test" |awk -F ',' '{print substr($0,1,length($0)-4)}'

PostgreSQL常用命令

发表于 2019-09-30 | 分类于 数据库 | 阅读次数:

PostgreSQL性能不错,在部分场景下还可以弥补MySQL的不足,但是由于sql语法和mysql有较大的区别,而且增加了很多特性,所以稍微有一些学习成本。

更多PG的使用可以参考 PG手册

连接数据库

1
>  psql -h localhost -p 32770 -d postgres -U postgres

数据库相关命令

1
2
3
4
5
6
7
8
9
10
11
12
13
-- 列出所有数据库
postgres=# \l

-- 创建数据库
postgres=# create database test;

-- 切换数据库
postgres=# \c test;

-- 删除数据库
postgres=# drop database test;

-- 删除数据库时可能会报错: database "test" is being accessed by other users

阅读全文 »

Kudu在使用过程中的各种限制

发表于 2019-09-25 | 分类于 数据库 | 阅读次数:

  首先声明:kudu是个好东西,为什么了,因为配合kafka、kafka-connector、kudu、presto可以构建实时数仓,这点就够了。数据通过kafka、kafka-connector实时进kudu,然后每日把kudu中的数据导入到hdfs,亿级数据耗时分钟级。相比每日凌晨再把源文件同步到hive中,能减少很多同步数据的耗时,同时数据实时进kudu,能提高查询当日数据的效率。尽管在使用过程中有很多限制,但是仍然不影响在实际使用过程中的落地

阅读全文 »
1234…29
JouyPub

JouyPub

聊聊区块链、大数据

226 日志
14 分类
43 标签
RSS
友情链接
  • 子涵笑谈前端
  • 大数据玩家
© 2017 — 2020 JouyPub