研究了文档发现在squid实现cdn或代理前最好先处理检查一下问题:


,每G磁盘空间需要32M内存,如此512M内存能支持16G的磁盘缓存。


加入你的用户每天8小时耗费1M流量,那就是每天大约3.5G,因此可以说每Mweb传输需要10到25G的磁盘空间。


A   linux查看文件描述符限制:

ulimit -n unlimited

ulimit -n


(以便为1024,但是要使用squid,最好修改为8192)


修改方法如下:

编辑 /usr/include/bits/types.h

改变 _FD_SETSIZE的值:

define __FD_SETSIZE 8912

下一步修改内核文件木舒服的限制:

echo 8912 > /usr/sys/fs/fiie-amx


最后增加进程文件 描述的限制:

ulimit -Hn 8192

以上为中文文档所写,但无法找到;此为成功找到如下:

(# vi /usr/include/bits/typesizes.h

# vi /usr/include/linux/posix_types.h


把里边的 #define __FD_SETSIZE 1024 改成 65536



2,设置当前环境



# ulimit -Hs 65536

# ulimit -n 65536)


B:

修改linux系统端口号:

echo “1023 400000” > /proc/sys/net/ipv4/ip_local_port_range

(临时端口号为1024 到40000)



2,CONNECT

CONNECT方法非常特殊,它是用于通过http代理来分装某种请求的方法,在处理CONNECT方法和远程的端口时应该特别谨慎

如:

您不希望squid连接到某些远程服务,您应该限制CONNECT连接,仅能连接到https/ssl或nntps端口设置如下:

acl CONNECT method CONNECT

acl SSL_ports 443 563


http_access allow CONNECT SSL_ports

http_access deny CONNECT



3,myport

假如你在http_port指令里指定的不止一个端口,那么squid就可以在不同的端口上监听。

如果将squid座位http加速器和用户代理服务器,那么myportACL特别有用了

如:

acl AccelPort myport 80

acl ProxyPort mysqlport 3128

acl MyNet src 10.111.5.0/28

http_access allow AccelPort                       #anyone

http_access allow ProxyPort MyNet #only my users

http_access deny ProxyPort                        #deny others



4,ident

第六个pdf,第12页


5,path_auth

squid当前支持三种技术以接受用户验证:HTTP基本协议,数字认证协议,和NTLM。

auth_param指令控制对所有的辅助程序的配置,


auth_param指令和proxy_auth ACL是少数在配置文件里顺序重要的实例。你必须在proxy_auth ACL之前定义至少一个严重辅助程序(使用auth_param),如果你没有这样做,squid打印出错消息,


并忽略proxy_auth ACL。



6,srcdom_regex,dstdom_regex,url_regex,

如:

acl WrbSite dotdom_regex -i ^www \ .

匹配以www开头的主机名

acl DHCPUser srcdom_regex -i ^dhcp

匹配以dhcp开头的主机名,如dhcp12.edong.com 而不是海鸥身体2.dhcp.edong.com


url_regex:设置url的过滤

urlpath_regex 与上很相似,不过传输协议和主机名不保函在匹配条件中,

如:

拒绝url里有sex,但仍允许主机名里面有sex的请求那么:

acl sex urlpath_regex sex

又如:

捕获cgi

acl CGI urlpath_regex ^/cgi-bin



7,

如果一个ACL太长,可以在一个文件夹内写上,然后在指定地址就好了。

acl Foo BadClients “/usr/local/squid/etc/BadClients”

在BadClients文件内这样写入

1.2.3.4

1.2.3.5

1.2.3.6

每个ip是一个单行.


8,在缓存目录被激活后最好不要在修改文件L1,L2的大小,因为缓存目录内被存储的文件ip是用L1,L2来实现的,如果修改容易造成无法访问现象。


9,使用read-only可以实现撤除某个缓存目录的切换,也就是说不自往要撤除的缓存目录写东西,过段时间及可撤除。

max-size 指定存储的文件大小的最大,以字节来说。


10,编译的参数解释:

--enable-carp


现在开始安装和设置cdn


因为squid在存储和访问时需要调用很多文件,所有需要增大文件描述符。

a,设置“文件描述符”,并设置用户同时打开文件数量

# vi /usr/include/bits/typesizes.h

# vi /usr/include/linux/posix_types.h


把里边的 #define __FD_SETSIZE 1024 改成 65536


2,设置当前环境


# ulimit -Hs 65536

# ulimit -n 65536


1,编译参数:

configure --prefix=/www/sqdn/sqdn --enable-dlmalloc --with-pthreads --enable-poll --disable-internal-dns --enable-stacktrace --enable-removal-policies="heap,lru" --enable-delay-pools --enable-storeio="aufs,coss,diskd,ufs" --with-maxfd=65536


2,设置参数

visible_hostname sqdn289


http_port 80 vhost vport


hierarchy_stoplist cgi-bin ?


acl QUERY urlpath_regex cgi-bin \?

cache deny QUERY


acl apache rep_header Server ^Apache

broken_vary_encoding allow apache


cache_mem 8 MB


maximum_object_size 4096 KB


cache_dir ufs /www/sqdn/sqdn/var/cache 1024 16 256


access_log /www/sqdn/sqdn/var/logs/access.log squid


hosts_file /www/sqdn/sqdn/etc/hosts


auth_param basic children 5

auth_param basic realm Squid proxy-caching web server

auth_param basic credentialsttl 2 hours

auth_param basic casesensitive off

http_port 203.191.147.36:80 vhost vport


refresh_pattern ^ftp:           1440    20%     10080

refresh_pattern ^gopher:        1440    0%      1440

refresh_pattern .               0       20%     4320


acl all src 0.0.0.0/0.0.0.0

acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255

acl to_localhost dst 127.0.0.0/8

acl SSL_ports port 443 563

acl CONNECT method CONNECT


http_access allow manager localhost

http_access deny manager

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports


http_access allow all   

{{{{(此处注意我想的是如果不做个人策略就要allow)

{再小说些,如:

acl customers dstdomain "/www/sqdn/sqdn/domains"

http_access allow customers

在domians中添加上cdn.langzi289.com.cn

然后就可以修改为http_access deny all 

及所有在domains内的域名才才能使用此cdn服务器)}}}


http_reply_access allow all


icp_access allow all


always_direct allow all


coredump_dir /www/sqdn/sqdn/var/cache


3,启动父进程与子进程如下:

root     32598 0.0 0.1 5448 652 ?        Ss   10:52   0:00 /www/sqdn/sqdn/sbin/squid -s

nobody   32600 0.0 0.8 8664 4508 ?        S    10:52   0:00 (squid) -s


4,添加hosts_file

/www/sqdn/sqdn/etc/hosts


222.191.251.52     cdn.langzi289.com.cn

222.191.251.52     cdn289.langzi289.com.cn

(此处仅是为了访问是不查询dns而提高网址速度和domains文件不一样,domains是策略添加域名)


5,cdn域名解析

将cdn.langzi289.com.cn 和cdn289.langzi289.com.cn 解析到203.191.147.36(也就是cdn服务器上)


收藏于 2009-09-04