Entries Tagged as ''

squid的参数refresh_pattern之我见

以前做东西总是不求甚解

没有打破砂锅问到底的精神

今天同事问我squidrefresh_pattern的问题

我就语塞了

知道是做过期控制的

但是具体每一个参数什么意思

该怎么配

就不明白了

refresh_pattern的用法是:

refresh_pattern [-i] regex min percent max [options]

这里regex就不用讲了,是用来匹配url的表达式

minmax是时间,单位是分钟

percent是百分数

这里讲讲判断squid上一个缓存对象是否过期的判断策略

这里的DATE是squid上缓存对象的时间

LM_DATE是源生成(或上次更改)的时间

这两个得看httpd的头信息

FRESH if (CURRENT_DATE - DATE) < min

FRESH if (CURRENT_DATE - DATE)/(DATE - LM_DATE) < percent

STABLE if (CURRENT_DATE - DATE) > max

OTHER, STABLE

如果需要把某个url定成永不过期

只需要把option参数设成ignore-reload即可

怎样在squid的access_log里记下url的参数

squid一直用的挺多的

自认为还有些了解

没想到今天同事一个问题就把我搞倒了

问题是:

要在access_log里记录访问url的参数

(也就是”?”后面的一些东西)

squid的access_log缺省是不记url里”?”后面的内容的

于是翻翻squid的文档

这才发现其实很简单

squid.conf里有个叫”strip_query_terms“的参数

设成off即可(缺省是打开的)

squid文档里是这么写的:

Tag Name strip_qury_terms
Usage strip_query_terms on|off

Description
Squid by default does not log query parameters. These parameters are however forwarded to the server verbatim. If we want to enable logging of query parameters, the strip_query_terms directive can be used .

By default, Squid strips query terms from requested URLs before logging. This protects your user’s privacy

Default strip_query_terms on

Linux(fc3)下对外发tcp请求所用端口范围限制的问题

发现一台机器

本地开了8080口(apache)

但当我telnet 127.0.0.1 8080的时候

系统提示错误:

Cannot assign requested address

最后发现是本地端口不够用了

sysctl -a | grep local_port_range

系统显示:

net.ipv4.ip_local_port_range = 32768    61000

也就是说系统向外发tcp的请求

所用的本地端口的范围只能是从32768到61000

这对于大负载的机器是不够的

于是我

sysctl -w net.ipv4.ip_local_port_range="1024 65000"

然后就OK了

wordpress的wp-cache插件造成空白页的问题

今天在blog上装了个plugin—-wp-cache

结果发现访问的确是快多了

但是也有了问题

就是经常出当访问某个页面的时候

出现空白页

view source看的确内容没下来

重新refresh又是好的

在网上看了看

知道这是因为我的机器上跑的是php5的问题

于是编辑文件

wordpress_path/wp-content/plugins/wp-cache/wp-cache-phase2.php

ob_end_clean()

改成

ob_end_flush()

再存盘就好了

cacti抓流量大于100M的机器的流量不准的问题

cacti要通过snmp来抓流量

当被抓机器的流量超过100M的时候

数据不出错的条件有二:

1,需要用snmp v2来抓数据;

2,需要用64位方式采集数据

难点在第二点

虽然从net-snmp5.2开始

就支持用–enable-mfd-rewrites参数打开64位数据采集

但是要命的是我们常用的rpm包里都没有加这个参数

所以我就把fedora core 3/4的net-snmp的srpm下下来

加上这个参数重新build了一下

用附件传上来了

下下去直接rpm -Uvh就可以了

注意redhat enterprise as4的net-snmp的版本是5.1.x

没有发布合适的srpm

因为他的kernel版本和fc3的差不多

直接用fc3的rpm也行
net-snmp-5.2.1.2-FC3.2.i386.rpm.zip
net-snmp-devel-5.2.1.2-FC3.2.i386.rpm.zip
net-snmp-libs-5.2.1.2-FC3.2.i386.rpm.zip

linux下php5+apache,php连不上mysql的问题

同事报有个php程序(简单连库操作)
在机器上用命令行的方式执行没有问题
但是一到web页面就出连接数据库失败的提示
而且在命令行用mysql客户端连数据库没有问题
用root用户、apache用户执行也没有问题
但是一用浏览器访问
马上就出连不上数据库的错误
最早怀疑是php5的问题
找来找去没找到原因
后来在mysql服务器上用tcpdump听包
发现在命令行执行程序的时候能看到包过来
但是在用浏览器方式访问的时候
看不有包过来
于是确认肯定是web server的问题
最后终于发现是selinux搞的鬼
setenforce 0
selinux一关掉
马上就OK

在有外网的机器上用iptables给内网的ftp server打洞

工作需求搭一个ftp服务器
但是这个服务器只有私(内)网地址
于是就从网通、电信和教育网各打了个洞过来(用iptables)
于是在服务器上装一个proftpd
具体怎么装不解释,这里主要讲打洞的外网机器怎么配
比如
打洞的机器的外网ip是a.b.c.d
内网ip是192.168.100.100
ftp server的ip是192.168.100.200
ftp服务开在端口21上
那么我们只需要在打洞的机器上这么操作
modprobe ip_conntrack_ftp ports=21
modprobe ip_nat_ftp ports=21

注意:如果ftp服务开在别的端口
比如2121,那么要做相应改动
modprobe ip_conntrack_ftp ports=2121
modprobe ip_nat_ftp ports=2121

或者
modprobe ip_conntrack_ftp ports=21,2121
modprobe ip_nat_ftp ports=21,2121

然后再
iptables -t nat -A PREROUTING -p tcp -d a.b.c.d –dport 21 -j DNAT –to 192.168.100.200:21
iptables -t nat -A POSTROUTING -p tcp -d 192.168.100.200 –dport 21 -j SNAT –to 192.168.100.100

最后,启用ipv4的包转发
sysctl -w net.ipv4.ip_forward=1
看到这里
也许大家会奇怪
我只处理了一个数据控制端口21
那ftp还有数据传输端口呢
还有主动模式、被动模式呢
呵呵
这些东西都由前面modprobe进去的ip_conntrack_ftp模块儿搞定了

一个巨酷的站点http://youos.com

周末在家
无意间发现的
他自己的注解是:a web operating system
当你用自己的帐号密码登上去后
相当于你登上了一个你自己的虚拟计算机
有一个虚拟的桌面(有点像gnome)
这种体验就好像是你从网络上通过“远程桌面”或其他远程管理工具登上你自己的机器一样
你的虚拟计算机一共有500个(写这篇文章的时候)可用的应用程序
包括
web浏览器、rss收集器、gmail、google map、聊天工具、notepat
甚至于还有word文档编辑器
等等等等
好像是用java做的
我都使用firefox登陆的
没有问题
速度也还算流畅
感觉非常酷

perl包IO::Socket::INET的timeout的问题

最近接触到个perl程序
其中用到了IO::Socket::INET这个包
看他的文档perldoc IO::Socket::INET
发现有Timeout这个参数
而且在程序里也设置了
但实际情况是
如果用这个包连上一个服务器之后
发命令
但服务器没有反应
也没有断开
这样的话好像程序也不断开

按照我的需求
应该是如果一段时间没有反应的话
程序应该主动断开才是呀
如果不能实现这个的话
那Timeout参数是做什么用的呢

大概看了一些网上的讨论
好像说这个Timeout是连服务器时的Timeout
如果一段时间没连上就超时
也不知道是不是真是这样
不过好像也只有这样才能解释我碰到的情况了