欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用DNSPod和Squid打造自己的CDN (七) 配置Squid

 更新時間:2013年04月20日 00:40:48   投稿:mdxy-dxy  
首先我們要明白一下squid在CDN中扮演的角色,squid在CDN中其實只是一個+緩存,跟一般的服務器類似,squid代替用戶向真正有內容的服務器進行請求,并且緩存下來

第 7 章 配置Squid
1.設置hosts表
首先我們要明白一下squid在CDN中扮演的角色。squid在CDN中其實只是一個緩存。跟一般的服務器類似,squid代替用戶向真正有內容的服務器進行請求,并且緩存下來。所不同的是,squid是作為一個類似apache一樣的web服務器存在,用戶訪問的時候并不感覺到是訪問了一臺,而是一個真實的web服務器。一般情況下,我們把這種方式稱之為“反向”。
所以,我們需要讓squid知道內容要到哪里去取。因為我們已經把域名naizhao.com設置了智能DNS,而且這臺squid服務器也是網(wǎng)通的,按照正常的dns解析,會把naizhao.com解析為2.2.2.2這個IP(也就是網(wǎng)通機器本身)。但這個IP上面并不存在任何所需要的內容,所有需要的內容其實是在1.1.1.1上(源服務器)。所以我們需要為naizhao.com固定一個IP,也就是1.1.1.1。
讓系統(tǒng)得到這個IP的方法有兩種,一種是設置hosts表,另外一種是系統(tǒng)里面搭建一個dns服務器。Windows下大家應該會經常去編輯到hosts文件,linux下同樣也存在這個文件,我們在前面的vim教程中已經提到過。搭建dns系統(tǒng)這個方法工程太過龐大,還是編輯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,新建這個文件,然后把下面的內容帖進去,保存
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


需要說明的幾個參數(shù):
cache_mem 1024 MB (squid使用的內存大小,注意必須要留下500M左右的內存給系統(tǒng)使用,建議系統(tǒng)內存2G,然后分配1G給squid)

cache_dir ufs /var/spool/squid 20480 16 256 (緩存的目錄,放在/var/spool/squid下面,大小是20G,第一級目錄是16個,第二級目錄是256個。因為一個目錄下面放置的文件和目錄數(shù)量有限制,所以這里必須要設置多個目錄,以適合squid存放大量文件的需要。目錄數(shù)千萬別設置太大,否則會引起系統(tǒng)死機)

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(允許訪問的域名列表。如果要跑多個網(wǎng)站就添加多幾個,用空格分開。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切換到其他用戶,這樣就算程序有漏洞被黑了,黑客也只能得到這個普通用戶的權限,對系統(tǒng)的危害將大大降低。保持默認即可)

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命令的幫助

./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.

我們可以看到-z命令就是建立緩存目錄的,所以我們輸入

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

沒有任何錯誤提示,說明目錄已經建立成功了,我們可以用 ls /var/spool/squid看看效果。

最后,我們讓squid跑起來

./squid -Nd 10

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已經正常跑起來了。

相關文章

最新評論