Squid做CDN

用Windows的朋友都知道,平时最头痛的事情就是程序占用CPU太高,而且消耗内存特别大。这是因为Windows的程序都是一些“通用”程序,并没有针对特定的平台和特定的CPU进行优化。在Linux下,通过源代码来编译二进制文件,这个问题将得到有效的改善。我们可以通过添加优化参数,让程序针对某个CPU型号和某个系统进行最大优化,减少文件大小、CPU使用率、内存使用率。
但是,通过指定优化参数来编译的程序,将不再具有跨系统跨平台的能力。就算两台机器系统版本一样,只要CPU不一样,程序都无法运行。程序只能在所编译的机器上运行。

一般情况下,优化参数都是通过export命令设定CFLAGS和CXXFLAGS,然后configure的时候会自动读入,make的时候会自动使用所选的优化参数。

例如,普通Pentium 4的CPU(显示的型号为Intel(R) Pentium(R) 4 CPU XXXXMHz,cpu family: 15,model: 0/1/2)就可以输入下面的命令

[php]

export CHOST="i686-pc-linux-gnu"
export CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
export CXXFLAGS="${CFLAGS}"

[/php]

CPU型号等信息可以通过输入下面的命令得到

[php]

cat /proc/cpuinfo

[/php]

将会输出类似下面的信息

[php]

processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 47
model name      : AMD Athlon(tm) 64 Processor 3200+
stepping        : 2
cpu MHz         : 2000.336
cache size      : 512 KB
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow up pni lahf_lm ts fid vid ttp tm stc
bogomips        : 4002.57

[/php]

上面的信息显示了这是一颗AMD Athlon 64 3200+的CPU。

CPU优化参数可以从下面地址获得(有些cpu family和model没有,可以用相同型号的代替)

http://gentoo-wiki.com/Safe_Cflags

3.编译Squid的前期准备

我们需要先了解一个叫做“文件描述符”的东西。我们知道,人能同时干的事情是有限的。文件描述符就是一个限制最大上限的东西。文件描述符用来限制一个程序能同时打开的文件数目,默认是1024。也就是说,如果不修改文件描述符,那么一个程序只能同时打开1024个文件。1024这个数字,一般程序已经够用了,但Squid不行。Squid会同时打开成千上万个文件,以保证最高的效率和响应速度。
想象一下下面两种情况:a.用户每次访问squid,squid会按照需要打开文件,然后读取文件内容再返回给用户。b.squid预先打开访问频率高的文件,用户访问squid,squid直接把内容返回给用户。相对来说,后面的方法可以对用户的请求进行更加快的反应。

要更改文件描述符的大小,必须要修改两个文件。
/usr/include/bits/typesizes.h
/usr/include/linux/posix_types.h
用vi打开上面的文件(如果忘记如何使用,请参考前面章节),查找
#define __FD_SETSIZE 1024
把1024改为65536,然后保存。
为什么是65536,不是更加大?因为这是Linux能接受的最大数值。
刚才编辑的这两个文件是C/C++程序里面的头文件,编译squid的时候会被自动引用。除了这两个文件以外,我们还需要对当前环境进行设置。
环境,也就是你用ssh登录到系统时的一些设定。每个登录进程都可以进行单独的设置,在没有把设置写入环境配置文件(.profile,.bash_rc)的情况下,关闭登录进程后环境设置会丢失。
举个例子,你使用pietty开了两个窗口,使用同一个帐号密码,同时登录到同一台服务器上面,然后在其中一个登录进程中使用export命令,那么只会在这个登录进程中生效,对另外一个登录进程不起作用。

明白后,我们说一下ulimit命令。ulimit用来设置当前环境的一些资源限制。刚才所说的,这个命令是对环境进行设置,所以退出当前登录进程后命令将会失效。

我们输入下面的命令

[php]

ulimit -Hs 65536
ulimit -n 65536

[/php]

H参数是硬性限制,s是堆栈上限,n是文件描述符上限。

最后,我们使用wget把squid的源代码下载回来。

wget http://www.squid-cache.org/Versions/v2/2.6/squid-2.6.STABLE13.tar.gz

wget是unix下一个支持断点续传的下载工具。会有一些比较实用的功能,比如把别人整个网站都下载回来(像平时用的小偷吧?)。
首先使用tar把源代码压缩包解压

tar zxvf squid-2.6.STABLE13.tar.gz

解压后,我们得到一个名为 squid-2.6.STABLE13 的目录。进入目录

cd squid-2.6.STABLE13

在configure前,我们必须要先设置cflags,这里我们假设CPU是intel core duo的,cpu family 6,model 14。通过 http://gentoo-wiki.com/Safe_Cflags#Intel_Core_Solo.2FDuo 可以找到对应的优化参数

[php]

CHOST="i686-pc-linux-gnu"
CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
CXXFLAGS="${CFLAGS}"

[/php]

然后通过export命令设置

[php]

export CHOST="i686-pc-linux-gnu"
export CFLAGS="-march=prescott -O2 -pipe -fomit-frame-pointer"
export CXXFLAGS="${CFLAGS}"

[/php]

设置完成后,我们可以通过env命令来查看是否设置成功。

然后,我们开始configure源代码。使用下面的命令,把squid安装到/usr/local/squid目录中去。

[php]./configure --prefix=/usr/local/squid --enable-follow-x-forwarded-for --enable-storeio=aufs,ufs --with-maxfd=65536 --with-pthreads --enable-dlmalloc --enable-poll --enable-stacktraces --enable-removal-policies=heap,lru --enable-delay-pools[/php]

对应参数的作用可以使用./configure –help得到。
这里大家要注意下,configure前面还有一个./,这个代表当前目录。意思是当前目录下面的configure文件。linux如果要执行当前目录的文件,必须要加上./。如果要执行当前目录下的下级目录里面的文件,可以不用加,比如bin/run。当然,./bin/run也是一样的效果。
接着我们会看到屏幕向下翻滚,出现一大堆checking for …的字样。一直等到下面的文字出现,并且停止,那么configure就算完成了。

config.status: creating tools/Makefile
config.status: creating include/autoconf.h
config.status: executing depfiles commands
[root@cnc squid-2.6.STABLE13]#
然后,我们输入make编译源代码,又是一行行的英文翻滚。是否有点感觉做黑客的味道?我们要做的还是继续等待下面的文字出现

make[2]: Leaving directory `/root/squid-2.6.STABLE13/tools'
make[1]: Leaving directory `/root/squid-2.6.STABLE13/tools'
make[1]: Entering directory `/root/squid-2.6.STABLE13'
make[1]: Nothing to be done for `all-am'.
make[1]: Leaving directory `/root/squid-2.6.STABLE13'
[root@cnc squid-2.6.STABLE13]#
这样源代码就算编译完成了。然后我们运行make install安装,等待下面的提示

make[2]: Leaving directory `/root/squid-2.6.STABLE13'
make[1]: Leaving directory `/root/squid-2.6.STABLE13'
[root@cnc squid-2.6.STABLE13]#
这里要注意:如果任何一个步骤出现带有error之类的警告,那么就是编译出错,需要检查到底是什么步骤出现问题并且改正。如果严格按照本文来编译,一般是不会出现错误的。另外,cflags参数使用不当同样会造成编译错误。
如果出现编译错误,必须要先make clean,然后重新make。(如果错误是在configure这步就不需要了)

到这里,squid就算是编译安装完毕了。我们可以到/usr/local/squid目录看看,里面已经躺着一大堆文件了。

[root@cnc squid-2.6.STABLE13]# cd /usr/local/squid
[root@cnc squid]# ls -lh
total 72K
drwxr-xr-x 2 root root 4.0K Jul  7 02:27 bin
drwxr-xr-x 2 root root 4.0K Jul  7 02:27 etc
drwxr-xr-x 2 root root 4.0K Jul  7 02:27 libexec
drwx------ 2 root root  16K Jun 15 08:09 lost+found
drwxr-xr-x 3 root root 4.0K Jul  7 02:27 man
drwxr-xr-x 2 root root 4.0K Jul  7 02:25 sbin
drwxr-xr-x 4 root root 4.0K Jul  7 02:25 share
drwxr-xr-x 3 root root 4.0K Jul  7 02:25 var
[root@cnc squid]#
接着我们要做的是配置squid。

1.设置hosts表

首先我们要明白一下squid在CDN中扮演的角色。squid在CDN中其实只是一个代理+缓存。跟一般的代理服务器类似,squid代替用户向真正有内容的服务器进行请求,并且缓存下来。所不同的是,squid是作为一个类似apache一样的web服务器存在,用户访问的时候并不感觉到是访问了一台代理服务器,而是一个真实的web服务器。一般情况下,我们把这种方式称之为“反向代理”。
所以,我们需要让squid知道内容要到哪里去取。因为我们已经把域名naizhao.com设置了智能DNS,而且这台squid服务器也是网通的,按照正常的dns解析,会把naizhao.com解析为2.2.2.2这个IP(也就是网通机器本身)。但这个IP上面并不存在任何所需要的内容,所有需要的内容其实是在1.1.1.1上(源服务器)。所以我们需要为naizhao.com固定一个IP,也就是1.1.1.1。
让系统得到这个IP的方法有两种,一种是设置hosts表,另外一种是系统里面搭建一个dns服务器。Windows下大家应该会经常去编辑到hosts文件,linux下同样也存在这个文件,我们在前面的vim教程中已经提到过。搭建dns系统这个方法工程太过庞大,还是编辑hosts文件相对来说比较简单,所以我们就采用编辑hosts表的方法。
linux下面的hosts表位于/etc/hosts,格式跟Windows大致相同,打开后我们把下面一行加到末尾

1.1.1.1 naizhao.com www.naizhao.com cnc.naizhao.com

如果已经按照前面的教程,添加过1.1.1.1这条记录的,修改为上面的样子。

2.设置squid

squid的配置文件位于/usr/local/squid/etc/squid.conf,打开后会有英文的详细说明。暂时我们不需要去理解这个文件里面各个配置的含义,相信大家看到一大堆英文都会头大的。大家只需要知道如何把squid按照自己的需求跑起来,并且不出错就好。
我们先用rm命令把squid.conf删掉。不用怕删掉后找不回来,还有一个默认的squid.conf.default在呢。一般的linux程序,包括apache等,都会有一个.default的默认文件,方便大家恢复默认设置,或者作为一个修改的参考。
squid.conf删掉后,我们再用vi squid.conf,新建这个文件,然后把下面的内容帖进去,保存

[php]
http_port 80 vhost vport=80
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
cache_mem 1024 MB
maximum_object_size 4096 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 256 KB
cache_dir ufs /var/spool/squid 20480 16 256
cache_swap_low 80
cache_swap_high 97
strip_query_terms off
request_body_max_size 5 MB
memory_pools on
memory_pools_limit 50 MB
access_log none
cache_log /var/log/squid/cache.log
cache_store_log none
pid_filename /var/run/squid.pid
hosts_file /etc/hosts
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i naizhao.com          240     100%    1440    ignore-reload
refresh_pattern -i www.naizhao.com           240     100%    1440    ignore-reload
refresh_pattern -i .gif 180 20% 10080 override-expire ignore-reload reload-into-ims
refresh_pattern -i .jpg 180 20% 10080 override-expire ignore-reload reload-into-ims
refresh_pattern .                           120  50%    1440
acl all src 0.0.0.0/0.0.0.0
acl p-manager proto cache_object
acl s-localhost src 127.0.0.1/255.255.255.255
acl d-localhost dst 127.0.0.0/8
acl d-domains dstdomain .naizhao.com
acl p-ssl  port 443 563
acl p-safe port 80 443 563
acl m-conn method CONNECT
acl m-purge method PURGE
acl n-maxconn maxconn 15
http_access allow p-manager s-localhost
http_access allow m-purge
http_access deny  !p-safe
http_access deny  m-conn !p-ssl
http_access deny  n-maxconn
http_access allow p-manager
http_access allow d-domains
http_access deny  all
http_reply_access allow all
acl r-url urlpath_regex realtime
cache deny r-url
icp_access allow all
follow_x_forwarded_for allow all
acl_uses_indirect_client offrange_offset_limit -1
dns_timeout 2 seconds
forward_timeout 10 seconds
connect_timeout 10 seconds
peer_connect_timeout 6 seconds
read_timeout 10 seconds
request_timeout 6 seconds
persistent_request_timeout 16 seconds
cache_mgr silence.z@gmail.com
cache_effective_user nobody
cache_effective_group nobody
visible_hostname cnc.naizhao.com
logfile_rotate 0
always_direct allow all
error_directory /usr/local/squid/share/errors/Simplify_Chinese
coredump_dir /var/spool/squid

[/php]

需要说明的几个参数:
cache_mem 1024 MB (squid使用的内存大小,注意必须要留下500M左右的内存给系统使用,建议系统内存2G,然后分配1G给squid)

cache_dir ufs /var/spool/squid 20480 16 256 (缓存的目录,放在/var/spool/squid下面,大小是20G,第一级目录是16个,第二级目录是256个。因为一个目录下面放置的文件和目录数量有限制,所以这里必须要设置多个目录,以适合squid存放大量文件的需要。目录数千万别设置太大,否则会引起系统死机)

memory_pools_limit 50 MB (内存池,用来存放缓存文件的链表,方便高速查找文件存放的对应位置,不需要太大。不懂就别管了)

cache_log /var/log/squid/cache.log(log文件的存放位置,必须要有读写权限,稍后说到)

refresh_pattern -i naizhao\.com 240 100% 1440 ignore-reload
refresh_pattern -i www\.naizhao\.com 240 100% 1440 ignore-reload
refresh_pattern -i .gif 180 20% 10080 override-expire ignore-reload reload-into-ims
refresh_pattern -i .jpg 180 20% 10080 override-expire ignore-reload reload-into-ims
(上面的几行指定了文件缓存的时间,可以指定某个域名,也可以指定某个文件类型。有更加多的域名或者文件类型就按照需要添加吧。-i是忽略大小写,naizhao.com和.gif是文件类型,240是最小缓存的时间,1440是最大缓存时间,都是分钟。这些先不用管,有需要的时候调整就好了。我们的口号是:先跑起来)

acl d-domains dstdomain .naizhao.com(允许访问的域名列表。如果要跑多个网站就添加多几个,用空格分开。naizhao.com前面有个英文的.,表示所有*.naizhao.com都允许。如果没有这个点,那么就只允许naizhao.com,访问www.naizhao.com就会提示访问被拒绝。)

cache_mgr silence.z@gmail.com (管理员的邮件地址,改为自己的)

cache_effective_user nobody
cache_effective_group nobody
(用来跑squid的用户和用户组。为了避免使用root帐号造成的不安全因素,大部分linux程序都会先用root运行,然后马上把运行的用户从root切换到其他用户,这样就算程序有漏洞被黑了,黑客也只能得到这个普通用户的权限,对系统的危害将大大降低。保持默认即可)

visible_hostname cnc.naizhao.com (服务器输出的机器名字,多台squid分布的时候这个很重要,通过设置多个不同的名字,很容易就可以找出哪台服务器有问题)

coredump_dir /var/spool/squid (squid挂掉后,临终遗言要放到哪里。不用管,一般人看不懂)

修改好配置文件后,我们还需要做一些最后的工作。
先建一个log目录,用来存放log文件。按照squid.conf的设置,我们输入下面的命令

mkdir /var/log/squid
chown nobody:nobody /var/log/squid

chown命令是设置所有者和组。刚才说了,squid将会使用用户nobody组nobody来运行。nobody:nobody冒号前面的是用户,后面的是用户组。
还有squid的缓存目录,同样需要设置权限为nobody:nobody

chown nobody:nobody /var/spool/squid

查看命令是否成功,可以使用ls -lh

ls -lh /var/spool/
……
drwxr-xr-x 3 nobody nobody 4.0K Jun 15 08:19 squid

剩下最后一步,初始化squid的缓存目录结构。(也就是刚才说的16个一级目录,256个二级目录。本身这些文件夹不存在,需要通过squid的命令建立)

squid的命令在/usr/local/squid/sbin下,我们进入这个目录,然后看看squid命令的帮助

[php]
./squid -h
Usage: squid [-hvzCDFNRYX] [-d level] [-s | -l facility] [-f config-file] [-u port] [-k signal]
-d level  Write debugging to stderr also.
-f file   Use given config-file instead of
/usr/local/squid/etc/squid.conf
-h        Print help message.
-k reconfigure|rotate|shutdown|interrupt|kill|debug|check|parse
Parse configuration file, then send signal to
running copy (except -k parse) and exit.
-s | -l facility
Enable logging to syslog.
-u port   Specify ICP port number (default: 3130), disable with 0.
-v        Print version.
-z        Create swap directories
-C        Do not catch fatal signals.
-D        Disable initial DNS tests.
-F        Don't serve any requests until store is rebuilt.
-N        No daemon mode.
-R        Do not set REUSEADDR on port.
-S        Double-check swap during rebuild.
-X        Force full debugging.
-Y        Only return UDP_HIT or UDP_MISS_NOFETCH during fast reload.

[/php]

我们可以看到-z命令就是建立缓存目录的,所以我们输入

./squid -z
2007/07/07 07:52:03| Creating Swap Directories

没有任何错误提示,说明目录已经建立成功了,我们可以用 ls /var/spool/squid看看效果。

最后,我们让squid跑起来

./squid -Nd 1

2007/07/07 07:53:50| Starting Squid Cache version 2.6.STABLE13 for i686-pc-linux-gnu...
2007/07/07 07:53:50| Process ID 3135
2007/07/07 07:53:50| With 1024 file descriptors available
2007/07/07 07:53:50| Using poll for the IO loop
2007/07/07 07:53:50| Performing DNS Tests...
2007/07/07 07:53:50| Successful DNS name lookup tests...
2007/07/07 07:53:50| DNS Socket created at 0.0.0.0, port 1026, FD 4
2007/07/07 07:53:50| Adding nameserver 211.147.6.3 from /etc/resolv.conf
2007/07/07 07:53:50| Adding nameserver 61.233.9.9 from /etc/resolv.conf
2007/07/07 07:53:50| Unlinkd pipe opened on FD 8
2007/07/07 07:53:50| Swap maxSize 20971520 KB, estimated 1613193 objects
2007/07/07 07:53:50| Target number of buckets: 80659
2007/07/07 07:53:50| Using 131072 Store buckets
2007/07/07 07:53:50| Max Mem  size: 1048576 KB
2007/07/07 07:53:50| Max Swap size: 20971520 KB
2007/07/07 07:53:50| Store logging disabled
2007/07/07 07:53:50| Rebuilding storage in /var/spool/squid (DIRTY)
2007/07/07 07:53:50| Using Least Load store dir selection
2007/07/07 07:53:50| Set Current Directory to /var/spool/squid
2007/07/07 07:53:50| Loaded Icons.
2007/07/07 07:53:52| Accepting accelerated HTTP connections at 0.0.0.0, port 80, FD 7.
2007/07/07 07:53:52| Accepting ICP messages at 0.0.0.0, port 3130, FD 9.
2007/07/07 07:53:52| WCCP Disabled.
2007/07/07 07:53:52| Ready to serve requests.
2007/07/07 07:53:52| Done scanning /var/spool/squid (0 entries)
2007/07/07 07:53:52| Finished rebuilding storage from disk.
2007/07/07 07:53:52|         0 Entries scanned
2007/07/07 07:53:52|         0 Invalid entries.
2007/07/07 07:53:52|         0 With invalid flags.
2007/07/07 07:53:52|         0 Objects loaded.
2007/07/07 07:53:52|         0 Objects expired.
2007/07/07 07:53:52|         0 Objects cancelled.
2007/07/07 07:53:52|         0 Duplicate URLs purged.
2007/07/07 07:53:52|         0 Swapfile clashes avoided.
2007/07/07 07:53:52|   Took 2.0 seconds (   0.0 objects/sec).
2007/07/07 07:53:52| Beginning Validation Procedure
2007/07/07 07:53:52|   Completed Validation Procedure
2007/07/07 07:53:52|   Validated 0 Entries
2007/07/07 07:53:52|   store_swap_size = 0k
2007/07/07 07:53:53| storeLateRelease: released 0 objects
打开浏览器,输入http://2.2.2.2,会看到Access Denied的错误提示,说明squid已经正常跑起来了。

因为指定了-d参数,所以现在squid会把所有的调试信息都输出终端。 按下键盘的ctrl+c,然后输入killall squid杀死squid,可以终止squid的进程。

测试并运行Squid

1.前期准备

想要测试Squid是否正常,必须要先把www.naizhao.com这个域名解析到2.2.2.2这个IP上。跟上一章一样,如果你是网通用户就不需要做任何操作,DNSPod会给你返回2.2.2.2这个IP。如果你是电信用户,或者解析出来的IP不是2.2.2.2,那么就要修改系统的hosts表,对应记录添加进去。跟上一章不一样,上一章修改的是Squid服务器的hosts表,你现在需要修改的是你用来测试Squid的系统的hosts表。
除了修改hosts表外,我们还需要一个名为curl的小工具。一般的Linux/Unix系统都附带了这个工具,如果使用Windows,那么需要到下面的地址下载一个,并且放到D:\(或者其他地方,自己喜欢)。
http://curl.haxx.se/latest.cgi?curl=win32-nossl (32位系统)
http://curl.haxx.se/latest.cgi?curl=win64-nossl (64位系统)
下载回来解压后,我们只需要一个curl.exe。

2.运行Squid

我们继续用上一章的方法,用调试方式启动squid
cd /usr/local/squid/sbin
./squid -Nd 1
然后打开浏览器,输入http://www.naizhao.com,看输出的网页是否正确。
如果能显示出正常的页面,那么说明squid已经正常运行了。但我们还需要确认一下,所需要的页面是否已经被squid缓存了。

3.测试Squid

我们使用curl,输入下面的命令(Windows用户请使用命令行来运行curl)
curl -I http://www.naizhao.com/

HTTP/1.0 200 OK
Date: Sun, 08 Jul 2007 12:16:27 GMT
Server: NaiZhao Web Server/1.0.0
Last-Modified: Wed, 13 Dec 2006 06:11:14 GMT
ETag: “7665b-1983-4417e480″
Accept-Ranges: bytes
Content-Length: 6531
Vary: Accept-Encoding
Content-Type: text/css
Age: 29155
X-Cache: MISS from cnc.naizhao.com
Via: 1.0 cnc.naizhao.com:80 (squid/2.6.STABLE13)
Connection: close

我们留意输出的内容,下面一行内容表示并没有命中缓存。也就是并不是从缓存中读取所需文件。一般第一次访问一个文件的时候,出现MISS是正常的,因为本来文件就不存在于缓存中。
X-Cache: MISS from cnc.naizhao.com
然后,我们重新运行一次命令,继续看输出的内容
curl -I http://www.naizhao.com/

HTTP/1.0 200 OK
Date: Sun, 08 Jul 2007 12:16:27 GMT
Server: NaiZhao Web Server/1.0.0
Last-Modified: Wed, 13 Dec 2006 06:11:14 GMT
ETag: “7665b-1983-4417e480″
Accept-Ranges: bytes
Content-Length: 6531
Vary: Accept-Encoding
Content-Type: text/css
Age: 29155
X-Cache: HIT from cnc.naizhao.com
Via: 1.0 cnc.naizhao.com:80 (squid/2.6.STABLE13)
Connection: close

可以看到,这次的输出已经是HIT了。也就是表示,内容是从缓存中读取的。
如果第二次访问仍然是MISS,那么你就要检查下网页是否限制了缓存。可以从下面几个方面入手:

Last-Modified: Wed, 13 Dec 2006 06:11:14 GMT 检查这行是否每次访问都变化。如果一直变化,说明页面是动态的,并不合适squid缓存。squid在每次请求的时候都会检查这行,判断页面是否已经过期,并且对过期的页面重新获取。

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 这行是负责控制缓存。no-store、no-cache、must-revalidate等都是要求squid禁止缓存内容,并且在每次请求的时候都去验证页面是否过期。

Expires: Thu, 19 Nov 1981 08:52:00 GMT 过期时间如果大于当前时间,也会被认为是页面已经过期,需要重新获取。这样的页面也不会被缓存。

Pragma: no-cache 这句也是禁止缓存。

大家可以按照上面的内容进行自查自纠,根据实际需求对网站进行修改即可。
确认没有问题后,我们就可以让Squid正式跑起来了。

4.正式运行Squid

ulimit -Hs 65536
ulimit -n 65536
./squid
直接使用上面的命令就可以让squid跑起来了。
跑起来后,输入http://www.naizhao.com看看访问是否正常。

5.让Squid跟随系统启动

CentOS让Squid跟随系统启动很简单,只需要编辑/etc/rc.local,在最后加上下面一行即可
ulimit -Hs 65536
ulimit -n 65536
/usr/local/squid/sbin/squid

还没有评论,快来抢沙发!

发表评论

  • 😉
  • 😐
  • 😡
  • 😈
  • 🙂
  • 😯
  • 🙁
  • 🙄
  • 😛
  • 😳
  • 😮
  • emoji-mrgree
  • 😆
  • 💡
  • 😀
  • 👿
  • 😥
  • 😎
  • ➡
  • 😕
  • ❓
  • ❗
  • 70 queries in 0.447 seconds