cmkzjw 发表于 2018-12-28 08:54:07

squid实例配置之静态cdn

  研究了文档发现在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
  




页: [1]
查看完整版本: squid实例配置之静态cdn