squid之重定向redirect使用/启用Linux的内存盘/squid重启建目

在squid.conf中添加
url_rewrite_program /etc/squid/redirect.pl ##重定向perl程序
redirect_rewrites_host_header off ##禁止squid做host更新
redirect_children 20 ##启用20个进程

再看这个redirect.pl
#!/usr/bin/perl
$|=1;
        while (<>) {
                @X = split;
                $url = $X[0];
                if ($url =~ /^http:\/\/www\.baidu\.com/) {
                        print “302:https:\/\/www\.google\.com\n”;
                }
                elsif ($url =~ /^http:\/\/opvps\.com/) {
                        print “302:http:\/\/www\.opvps\.com\n”;
                }
                elsif ($url =~ /^http:\/\/gmail\.com/) {
                        print “302:https:\/\/gmail\.google\.com\n”;
                }
                else {
                        print “$url\n”;
                }
            }

程序实现如下功能:
将http://www.baidu.com
转向http://www.google.com

http://opvps.com
及www变成http://www.opvps.com

http://gmail.com
变成https://gmail.google.com

重定向acl匹配:

正常情况下,squid将每个请求发送往重定向器。可以使用redirector_access规则来有选择的发送某些请求。语法与http_access相同:
redirector_access allow|deny [!]ACLname
例如:
acl opvps src 192.168.1.5
acl All src 0/0

redirector_access deny opvps
redirector_access allow All
在该情形里,对匹配opvps(来源于192.168.0.5的主机)的请求,Squid跳过重定向器。

 

 

-----------------------------------------------------------------------

启用Linux的内存盘

大家都知道,读写放在内存里面文件的速度远远快于放在硬盘,放在内存中基本上不存在IO读写等待的问题。当然放在内存上,机器一当重启,内存中的文件就会丢失了,适合于存放一些Cache 如squid的 cache目录

大多数的Linux发行版本中,内存盘默认使用的是/dev/shm 大小一般等同于内存的大小

当然我也可以重设这个盘的大小,使用
mount -o remount,size=3G /dev/shm
这样/dev/shm就成为3G了

其实我们可以直接把文件放到/dev/shm下使用的

下面,我将squid 的cache 目录挂在内存盘中使用
mount -t tmpfs -o size=3G,mode=0755 tmpfs /usr/local/squid/var/cache
在/etc/fstab中加入一行,实行每次启动自动挂载内存盘
tmpfs /usr/local/squid/var/cache  tmpfs size=3G,mode=0755 0 0
当然,squid的cache的权限需要更改,每次启动需要更改目录权限及重建cache目录,需要执行如下指令
chown -R nobody:nobody /usr/local/squid/var/cache #这里的squid是使用nobody用户的
/usr/local/squid/sbin/squid -z ##重建cache

这样linux的内存盘就用启来了

-----------------------------------------------------

新到服务器Dell1900,2G内存,正好用来做squid代理服务器,用内存盘做ramdisk,以减少I/O瓶颈,FreeBSD 6.2的OS,先vi /etc/fstab,加入'md /ramdisk mfs rw,noatime,-s512M 0 0',但是这样的话,每次机器重启由于没有cache目录结构了,导致squid没法启动,需要手动squid -z,于是修改/usr/local/etc/rc.d/squid启动脚本如下,注意蓝色部分是添加的自动创建cache目录。

squid_checkrunning() {
        ${command} ${squid_flags} -k check 2>/dev/null
}

squid_stop() {
        echo "Stopping ${name}."
        ${command} ${squid_flags} -k shutdown
        run_rc_command poll
}

. /etc/rc.subr

name=squid
rcvar=${name}_enable

command=/usr/local/sbin/squid
extra_commands=reload
reload_cmd="${command} ${squid_flags} -k reconfigure"
stop_precmd="squid_checkrunning"
stop_cmd="squid_stop"

load_rc_config ${name}

squid_chdir=${squid_chdir:-/usr/local/squid/logs}
squid_enable=${squid_enable:-"NO"}
squid_flags=${squid_flags-"-D"}
squid_user=${squid_user:-squid}
default_config=/usr/local/etc/squid/squid.conf

required_dirs=${squid_chdir}

# squid(8) will not start if ${default_config} is not present so try
# to catch that beforehand via ${required_files} rather than make
# squid(8) crash.
# If you remove the default configuration file make sure to add
# '-f /path/to/your/squid.conf' to squid_flags

if [ -z "${squid_flags}" ]; then
        required_files=${default_config}
fi

cache_dir="/ramdisk/00"
if [ ! -d $cache_dir ]; then
  /usr/local/sbin/squid -z
fi

run_rc_command "$1"
此条目发表在article分类目录,贴了标签。将固定链接加入收藏夹。