NGINX userid 分析、解码

生成userid的代码在 http/modules/ngx_http_userid_filter_module.c 大概550行左右。
uid_set 是4个uint32构成的,其中比较有用的是第二个unit32,是userid的生成时间。第四个是一个递增值 以 0x03030302 为初始值,每次递增0x100。

default: /* AF_INET */
                sin = (struct sockaddr_in *) c->local_sockaddr;
                ctx->uid_set[0] = sin->sin_addr.s_addr;
                break;
            }

        } else {
            ctx->uid_set[0] = htonl(conf->service);
        }

        ctx->uid_set[1] = htonl((uint32_t) ngx_time());
        ctx->uid_set[2] = htonl(start_value);
        ctx->uid_set[3] = htonl(sequencer_v2);
        sequencer_v2 += 0x100;
        if (sequencer_v2 < 0x03030302) {
            sequencer_v2 = 0x03030302;
        }
// 用PHP解码nginx userid
$str = $_REQUEST["uid"] ?: $_COOKIE['uid'];

function nginx_userid_decode($str)
{
        return  unpack('N*', base64_decode(str_replace(' ', '+', $str)));
}

$hash = nginx_userid_decode($str);
var_dump($hash);
date_default_timezone_set("UTC");
var_dump(date("Y-m-d H:i:s", $hash[2]));

参考文章:
http://www.lsproc.com/blog/nginx_userid_decode/

Read: 2834

CentOS Linux 6 NFS 配置

yum install nfs nfs-utils rpcbind
service rpcbind start
chckonfig rpcbind on

cat "/shared_dir 192.168.1.200(rw,async,all_squash,anonuid=500,anongid=500)" > /etc/exports
參數 參數功能 預設參數
fg
bg
當執行掛載時,該掛載的行為會在前景 (fg) 還是在背景 (bg) 執行? 若在前景執行時,則 mount 會持續嘗試掛載,直到成功或 time out 為止,若為背景執行, 則 mount 會在背景持續多次進行 mount ,而不會影響到前景的程序操作。 如果你的網路連線有點不穩定,或是伺服器常常需要開關機,那建議使用 bg 比較妥當。 fg
soft
hard
如果是 hard 的情況,則當兩者之間有任何一部主機離線,則 RPC 會持續的呼叫,直到對方恢復連線為止。如果是 soft 的話,那 RPC 會在 time out 後『重複』呼叫,而非『持續』呼叫, 因此系統的延遲會比較不這麼明顯。同上,如果你的伺服器可能開開關關,建議用 soft 喔! hard
intr 當你使用上頭提到的 hard 方式掛載時,若加上 intr 這個參數, 則當 RPC 持續呼叫中,該次的呼叫是可以被中斷的 (interrupted)。 沒有
rsize
wsize
讀出(rsize)與寫入(wsize)的區塊大小 (block size)。 這個設定值可以影響用戶端與伺服器端傳輸資料的緩衝記憶容量。一般來說, 如果在區域網路內 (LAN) ,並且用戶端與伺服器端都具有足夠的記憶體,那這個值可以設定大一點, 比如說 32768 (bytes) 等,提升緩衝記憶區塊將可提升 NFS 檔案系統的傳輸能力! 但要注意設定的值也不要太大,最好是達到網路能夠傳輸的最大值為限。 rsize=1024
wsize=1024
mount -t nfs -o bg,soft,rsize=32768,wsize=32768 192.168.1.100:/shared_dir /mount_point

Mac系统下挂载NFS有一点特别,需要加几个参数
不加resvport在mac下会挂载不了,不加nolockd的话给文件加锁的时候会提示nfs server lockd not responding

mount -t nfs -o resvport,rw,nolockd 192.168.1.100:/www /www

Read: 162

强大的 轻量级 Linux服务器监控系统 Monitorix

Monitorix 是一个开源的、轻量的 Linux/Unix 服务器监控工具。安装配置简单,图表功能丰富。

官方网站:http://www.monitorix.org

安装方法:

# perl-HTTP-Server-Simple 需要从EPEL安装
rpm -ivh http://mirrors.yun-idc.com/epel/6/x86_64/epel-release-6-8.noarch.rpm

# 安装依赖
yum install rrdtool rrdtool-perl perl-libwww-perl perl-MailTools perl-MIME-Lite perl-CGI perl-DBI perl-XML-Simple perl-Config-General perl-HTTP-Server-Simple

# 安装Monitorix
yum install monitorix

# 启动服务
service monitorix start

博主最近要监控一台线上服务器,用cacti又嫌太麻烦,在看了《比cacti更好的linux单机监控——Monitorix的安装与配置》 之后决定采用Monitorix。

在使用的过程中博主发现一个问题,当刷新报表页面的时候会有一个进程 netstat -nl –tcp 消耗掉大量的CPU,而且报表页面载入非常的慢。根据分析 Network port traffic (port.rrd),和 Nginx statistics (nginx.rrd) 两个脚本都会执行这个命令,而且不止一次。通过google搜索,我找到了解决方案——采用ss替代netstat命令。

修改方法:

在/usr/lib/monitorix 下面找到nginx.pm和port.pm,修改其中执行netstat 命令的部分替换为ss即可。

关于ss的介绍在这里:《篡权的ss》

如果需要监控温度、电压情况需要安装lm_sensors,可以通过yum安装。安装lm_sensors之后还要运行sensors-detect来检测生成/etc/sysconfig/lm_sensors文件。

Read: 2680

SimpleScriptLoader for Firefox 一个简单的脚本加载工具

最近在做的一个项目需要调用JS文件对网页内容进行修改,老是用Firefox复制粘贴特别麻烦,于是乎就顺手写了个小扩展SimpleScriptLoader。这个小东西可以手动或者自动的加载指定的JS文件,非常简单易用。

支持在任何网页打开时加载指定的脚本文件,还可以设置自动加载,在选项面板中能设置允许自动加载的URL地址。

开源协议:GPL v3

代码托管在GitHub:https://github.com/HessianZ/simple-script-loader

0.1版已经发布到了Firefox扩展中心:https://addons.mozilla.org/zh-CN/firefox/addon/simple-script-loader/

界面截图

选项面板截图

Read: 83

广告术语 CPM、CPC、CPA 是什么意思?

1.CPM(Cost Per Mille,或者Cost Per Thousand;Cost Per Impressions) 每千人成本
 
  网上广告收费最科学的办法是按照有多少人看到你的广告来收费。按访问人次收费已经成为网络广告的惯例。CPM(千人成本)指的是广告投放过程中,听到或者看到某广告的每一人平均分担到多少广告成本。传统媒介多采用这种计价方式。在网上广告,CPM取决于“印象”尺度,通常理解为一个人的眼睛在一段固定的时间内注视一个广告的次数。比如说一个广告 横幅的单价是1元/CPM的话,意味着每一千个人次看到这个Ban-ner的话就收1元,如此类推 ,10,000人次访问的主页就是10元。?
 
  至于每CPM的收费究竟是多少,要根据以主页的热门程度(即浏览人数)划分价格等级,采 取固定费率。国际惯例是每CPM收费从5美元至200美元不等。
 
2.CPC(Cost Per Click;Cost Per Thousand Click-Through) 每点击成本
 
  以每点击一次计费。这样的方法加上点击率限制可以〖WX)〗加强作弊的难度,而且是宣传网站站点的最优方式。但是,此类方法就有不少经营广告的网站觉得不公平,比如,虽然浏览者没有点击,但是他已经看到了广告,对于这些看到广告却没有点击的流量来说,网站成 了白忙活。有很多网站不愿意做这样的广告,据说,是因为传统媒体从来都没有这样干过。
 
3.CPA(Cost Per Action) 每行动成本?
 
  CPA计价方式是指按广告投放实际效果,即按回应的有效问卷或定单来计费,而不限广告投 放量。CPA的计价方式对于网站而言有一定的风险,但若广告投放成功,其收益也比CPM的计 价方式要大得多。 ? 广告主为规避广告费用风险,只有当网络用户点击旗帜广告,链接广告主网页后,才按点击 次数付给广告站点费用。

Read: 2849