url_rewrite_program(squid游戏恶搞~)

30 Dec 2009 Posted in  squid

标题很引人吧。其实是我在查找squid的rewrite资料时,看到的一篇文章。原作者突发奇想,准备让公司的同事们上网时,看到的所有图片全都倒过来180°。嘿嘿,小样,还不拧断你们脖子~~ 继续阅读……


url_rewrite_program(首次访问跳转)

30 Dec 2009 Posted in  squid

上文提到,squid大多数的rewrite_program是用perl编写的。现在就转几个简洁明了的redirect.pl。虽说我至今没把perl基础教程看完。不过从中领会一下squid的rewrite流程,还是可以的: 继续阅读……


squid_session(首次访问跳转)

30 Dec 2009 Posted in  squid

上文perl例二中提到的第一次上某网站时先跳转公司主页。在CU上看到另一种办法。即在squid2.7以上版本中,有个squid_session。操作如下: 首先是安装: 安装squid ( for 2.7 stable ) 修改源代码:vi src/errorpage.c 60行处将 继续阅读……


nginx502错误

30 Dec 2009 Posted in  nginx

NGINX 502 Bad Gateway错误是FastCGI有问题,造成NGINX 502错误的可能性比较多。将网上找到的一些和502 Bad Gateway错误有关的问题和排查方法列一下,先从FastCGI配置入手: 继续阅读……



查看一些常见应用的编译选项

13 Dec 2009 Posted in  linux

  • nginx:
    [rao@localhost ~]$ /home/nginx/sbin/nginx -V|grep conf
    nginx version: 0.7.54
    built by gcc 4.1.2 20080704 (Red Hat 4.1.2-44)
    configure arguments: --prefix=/home/nginx --with-pcre
    --with-http_stub_status_module --without-http_memcached_module
    --without-http_fastcgi_module
    apache:
    [rao@localhost ~]$ cat /home/apache2/build/config.nice
    #! /bin/sh
    #
    # Created by configure
    CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"; export
    CFLAGS
    "./configure"
    "--prefix=/home/apache2"
    "--enable-static-support"
    "--enable-rewrite"
    "--with-mpm=worker"
    "--enable-logio"
    "--enable-so"
    "--enable-mime-magic"
    "--disable-cgid"
    "--disable-cgi"
    "--disable-userdir"
    "--disable-dir"
    "--disable-include"
    "--disable-filter"
    "--disable-env"
    "--disable-setenvif"
    "--disable-status"
    "--disable-autoindex"
    "--disable-asis"
    "--disable-alias"
    "--disable-actions"
    "--disable-authn-file"
    "--disable-authn-default"
    "--disable-authz-default"
    "--disable-authz-groupfile"
    "--disable-authz-user"
    "--disable-auth-basic"
    "CFLAGS=-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
    "$@"
    
  • php:
[rao@localhost ~]$ php -i|grep configure
Configure Command =>  './configure'
'--build=x86_64-redhat-linux-gnu' '--host=x86_64-redhat-linux-gnu'
'--target=x86_64-redhat-linux-gnu' '--program-prefix='
'--prefix=/usr' '--exec-prefix=/usr' '--bindir=/usr/bin'
'--sbindir=/usr/sbin' '--sysconfdir=/etc' '--datadir=/usr/share'
'--includedir=/usr/include' '--libdir=/usr/lib64'
'--libexecdir=/usr/libexec' '--localstatedir=/var'
'--sharedstatedir=/usr/com' '--mandir=/usr/share/man'
'--infodir=/usr/share/info' '--cache-file=../config.cache'
'--with-libdir=lib64' '--with-config-file-path=/etc'
'--with-config-file-scan-dir=/etc/php.d' '--disable-debug'
'--with-pic' '--disable-rpath' '--without-pear' '--with-bz2'
'--with-curl' '--with-exec-dir=/usr/bin' '--with-freetype-dir=/usr'
'--with-png-dir=/usr' '--enable-gd-native-ttf' '--without-gdbm'
'--with-gettext' '--with-gmp' '--with-iconv' '--with-jpeg-dir=/usr'
'--with-openssl' '--with-png' '--with-pspell'
'--with-expat-dir=/usr' '--with-pcre-regex=/usr' '--with-zlib'
'--with-layout=GNU' '--enable-exif' '--enable-ftp'
'--enable-magic-quotes' '--enable-sockets' '--enable-sysvsem'
'--enable-sysvshm' '--enable-sysvmsg' '--enable-track-vars'
'--enable-trans-sid' '--enable-yp' '--enable-wddx'
'--with-kerberos' '--enable-ucd-snmp-hack'
'--with-unixODBC=shared,/usr' '--enable-memory-limit'
'--enable-shmop' '--enable-calendar' '--enable-dbx' '--enable-dio'
'--with-mime-magic=/usr/share/file/magic.mime' '--without-sqlite'
'--with-libxml-dir=/usr' '--with-xml' '--with-system-tzdata'
'--enable-force-cgi-redirect' '--enable-pcntl' '--with-imap=shared'
'--with-imap-ssl' '--enable-mbstring=shared'
'--enable-mbstr-enc-trans' '--enable-mbregex'
'--with-ncurses=shared' '--with-gd=shared' '--enable-bcmath=shared'
'--enable-dba=shared' '--with-db4=/usr' '--with-xmlrpc=shared'
'--with-ldap=shared' '--with-ldap-sasl' '--with-mysql=shared,/usr'
'--with-mysqli=shared,/usr/bin/mysql_config' '--enable-dom=shared'
'--with-dom-xslt=/usr' '--with-dom-exslt=/usr'
'--with-pgsql=shared' '--with-snmp=shared,/usr'
'--enable-soap=shared' '--with-xsl=shared,/usr'
'--enable-xmlreader=shared' '--enable-xmlwriter=shared'
'--enable-fastcgi' '--enable-pdo=shared'
'--with-pdo-odbc=shared,unixODBC,/usr'
'--with-pdo-mysql=shared,/usr' '--with-pdo-pgsql=shared,/usr'
'--with-pdo-sqlite=shared,/usr' '--enable-dbase=shared'
  • mysql: 据网上都说是cat /usr/bin/mysqlbug|grep conf,但我这的结果是压根没用……
继续阅读……

引号的魔力

04 Dec 2009 Posted in  bash

[root@neteasesquid1 ~]# i=1.2.3.4;awk -v OFS="tt" 'BEGIN{print '"$i"',"'"$i"'","'$i'",""'$i'""}'
1.20.30.4
1.2.3.4
1.2.3.4
1.20.30.4

以前用awk调用shell变量时,一般都是文字字符串,看不出什么问题来;今天突然用上ip,发现输出结果显示不正常。于是做了如上实验。 但是原因嘛,还是不知道…… 继续做下一个实验: 继续阅读……


sed子命令集

23 Nov 2009 Posted in  bash

1.: 用法: :lable 在脚本中标记一行,用于实现由b或t的控制转移。Label最多可以包含7个字符 继续阅读……


一种CDN中的动态数据存储方案——UbDP

22 Nov 2009 Posted in  CDN

上回百度到这篇文章,于是上维普下载了来看,为方便阅读,贴在这里。 继续阅读……


nginx编译优化压力测试(转)

21 Nov 2009 Posted in  nginx

默认nginx使用的GCC编译参数是-O,需要更加优化可以使用以下两个参数: 继续阅读……


squidclient用法

21 Nov 2009 Posted in  squid

squidclient是squid自带的一个小工具,一般用的最多的,就是-m purge URL了。 其实还有别的用法(看看help吧,不过这个慢慢来~~)先说一个大全式的用法(其他的具体用法,大不了用这里rep出来好了):squidclient -p 80 mgr:info,显示如下: 继续阅读……


让squid访问日志显示完整url

21 Nov 2009 Posted in  squid

一大串的header结束了,从上篇开始回到squid.conf本身的设置上来。 继续阅读……


cache驻留时间(四、If-Modified-Since)

21 Nov 2009 Posted in  CDN

话接上回If-Modified-Since,当squid开启reload_into_ims on之后,no-cache头会在在浏览器上被转化成If-Modified-Since标识返回给web服务器。从整体架构考虑,因为squid上已经破坏了http协议的规定,那么web端就必须主动承担对网页过期的识别管理工作。嗯,要是所有的网站都能从一规划开始就这么搞,俺们干CDN的可就轻松了~~~ 继续阅读……


cache驻留时间(五、Etag)

21 Nov 2009 Posted in  CDN

浏览器的请求中,除了用If-Modified-Since去比对Last-Modified以外,还有另一个标签Etag,这个东东是web服务器比较有用的,squid倒没什么。不过大文件下载加速也有采用apache的系统,一并算在cache缓存里头讲吧: 继续阅读……


cache驻留时间(六、大文件)

21 Nov 2009 Posted in  CDN

话说上回提到大文件下载,公司除了apache以外,有些也是用squid做的。这回说说这方面的设置。 下载业务,首先要注意到的,第一是多线程,第二是断点续传。 继续阅读……


cache驻留时间(三、Expires/Cache-Control)

20 Nov 2009 Posted in  CDN

在谈cache的时候插入了上一篇回忆正则表达式的内容,是因为最近一个客户的古怪要求“url以/结尾或文件夹结尾的不能缓存”。 继续阅读……


awk单行实践

19 Nov 2009 Posted in  bash

客户提交一份预加载文件列表,采用了如下格式: http://www.a.com/a/b/ a b c d e f g h i j k l m n http://www.b.com/b/c/ o p q r s t u v w x y z http://www.c.com/d/e http://www.d.com/f/g 必须要把文件整理成完整的url,才好操作。 最初的设想,是以带http开头的行为RS,以n为OFS,然后打印RS $0。随后发现这个想法问题多多——最主要的一点是:直接print $0的话,输出结果是不显示OFS的。 然后我才想到用for循环打印所有列的话,默认就已经分行了,不用定义OFS和ORS。 剩下的问题就是RS,然而不管我怎么写正则匹配表达式,结果都搞不定……唉 最后只能放弃这个想法,采用比较繁琐的办法: 继续阅读……


正则表达式

19 Nov 2009 Posted in 

系统整理一下正则表达式: “.”匹配除了”n”以外的任一字符; “”匹配前一字符任意次;【“.”匹配任意个字符】 “^”匹配行首; “$”匹配行尾;【“^$”匹配空行】 “[ ]”匹配其中某个字符;【“[^ ]”匹配此外任一字符】 “”匹配单词边界,即完整单词; “?”匹配前一字符0或1次; “+”匹配前一字符非0次;【可能要用转义一下】 “{ }”匹配次数; 继续阅读……


cache驻留时间(二、LM-factor算法)

19 Nov 2009 Posted in  CDN

好吧,满足某人的好奇,花开两朵,各表一枝了。 今天又看到关于LM-factor的另一种说法,特摘录如下: 上面这张图来自于《Squid.Definitive.Guide》第七章,对squid的LM-factor算法作出了一个很直观的描述。 请注意这张图的起始时间坐标:Last-Modified,这个是由squid读取的原始web数据所规定的。 然后就是Date,这个是原始数据进入squid的缓冲的时间。 最后就是Expires,这个就是原始数据在squid中的缓冲过期时间。 可以很容易的得出结论,对于LM-factor算法来说,原始数据在squid中的缓冲时间为 (原始数据进入squid的缓冲的时间-原始web数据所规定的Last-Modified时间)percent 所以,我们可以郑重得出结论,在squid的refresh_pattern设置中,percent与Min、Max两个值是完全没有关系! 最后总结一下,对于squid来说,缓冲的数据在cache中的存活时间是这样决定的: 如果有定义refresh_pattern:只要满足以下两个条件之一,缓冲对象过期 缓冲对象在squid的cache缓冲的时间大于refresh_pattern定义的max 缓冲对象在squid的cache缓冲的时间大于(原始数据进入squid的缓冲的时间-原始web数据所规定的Last-Modified时间)percent 用编程语言来描述,就是 if ((CURRENT_DATE-DATE) elif ((CURRENT_DATE-DATE)/(DATE-LM_DATE) elif ((CURRENT_DATE-DATE)>max){STABLE} else{STABLE} 继续阅读……


cache驻留时间(一、refresh_pattern)

18 Nov 2009 Posted in  CDN

上一篇举了个缓存时间的事故,现在说说普通情况下影响这个的配置: 继续阅读……


游戏CDN加速猜想

18 Nov 2009 Posted in  CDN

没事去国内几个主要的CDN商网站看了看各个的CDN产品说明和解决方案,基本上大同小异(其实连小异我都没怎么找到)。唯一让我惊讶的是蓝汛Chinacache——蓝汛在自己网站上写着“游戏应用加速”,内容如下: 继续阅读……


squid一次诡异事故

18 Nov 2009 Posted in  squid

前几天出了一次诡异的事情。某客户在半夜2点钟更新了其网站的内容后,按照刷新规则,squid应该在15分钟内也更新成新内容的。但实际情况却是新网页一刷新没准就变成旧的,一直到5点左右这种现象才算是消失了。 继续阅读……


squid的一点小问题

17 Nov 2009 Posted in  squid

网站运行,出错是必然的。squid提供了一整套多国语言的错误信息页面,放在share/errors/目录下。 但是,让人很尴尬的一点是:squid默认的english错误页面中,居然会公开显示客户源站的IP地址。而有一部分客户,用CDN的目的之一就是要用CDN来分担攻击流量,保护自己。这下可好。生生给暴露出去了。 而附带的简体中文页面中,刚好就没这个信息。真不知道是在讽刺国人攻击性太强,心理太黑暗了么…… 不管怎么说,得把这个改掉。最简单的办法,修改english页面,删除掉ERR_CONNECT_FAIL里那个关键的信息。关键的就是下面这一段: 继续阅读……


squid的SSL配置

16 Nov 2009 Posted in  squid

公司新进客户,要求加速它的论坛,比较奇怪的是,整个论坛居然都是https协议的网页。所以得做443端口的配置。 如果只是端口,一个https_port 443就够了。麻烦的地方在证书(之前就有客户死活不肯给证书,于是只能给做个端口转发,顶天了算是路由优化,何苦往CDN里投钱……)。 在拿到证书后,squid.conf里添加这么一句,SSL配置就算是完成了。但测试的时候问题可就多多了 继续阅读……


squid防盗链配置

14 Nov 2009 Posted in  squid

做网站的,谁愿意自己辛辛苦苦的成果就被别人轻松转载,如果是文字的,一般也就禁鼠标右键,再没什么好办法(当然,名人好打官司另说),但如果是图片,影音的文件,大可以利用http协议的header信息进行控制,这就是大多数web服务器日志要记录的referer。 公司新进一测试客户,就要求CDN方配合做防盗链。 继续阅读……