用DNSPod和Squid打造自己的CDN (七) 配置Squid
第 7 章 配置Squid
1.設(shè)置hosts表
首先我們要明白一下squid在CDN中扮演的角色。squid在CDN中其實(shí)只是一個(gè)緩存。跟一般的服務(wù)器類似,squid代替用戶向真正有內(nèi)容的服務(wù)器進(jìn)行請(qǐng)求,并且緩存下來(lái)。所不同的是,squid是作為一個(gè)類似apache一樣的web服務(wù)器存在,用戶訪問的時(shí)候并不感覺到是訪問了一臺(tái),而是一個(gè)真實(shí)的web服務(wù)器。一般情況下,我們把這種方式稱之為“反向”。
所以,我們需要讓squid知道內(nèi)容要到哪里去取。因?yàn)槲覀円呀?jīng)把域名naizhao.com設(shè)置了智能DNS,而且這臺(tái)squid服務(wù)器也是網(wǎng)通的,按照正常的dns解析,會(huì)把naizhao.com解析為2.2.2.2這個(gè)IP(也就是網(wǎng)通機(jī)器本身)。但這個(gè)IP上面并不存在任何所需要的內(nèi)容,所有需要的內(nèi)容其實(shí)是在1.1.1.1上(源服務(wù)器)。所以我們需要為naizhao.com固定一個(gè)IP,也就是1.1.1.1。
讓系統(tǒng)得到這個(gè)IP的方法有兩種,一種是設(shè)置hosts表,另外一種是系統(tǒng)里面搭建一個(gè)dns服務(wù)器。Windows下大家應(yīng)該會(huì)經(jīng)常去編輯到hosts文件,linux下同樣也存在這個(gè)文件,我們?cè)谇懊娴膙im教程中已經(jīng)提到過(guò)。搭建dns系統(tǒng)這個(gè)方法工程太過(guò)龐大,還是編輯hosts文件相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,所以我們就采用編輯hosts表的方法。
linux下面的hosts表位于/etc/hosts,格式跟Windows大致相同,打開后我們把下面一行加到末尾
1.1.1.1 naizhao.com www.naizhao.com cnc.naizhao.com
如果已經(jīng)按照前面的教程,添加過(guò)1.1.1.1這條記錄的,修改為上面的樣子。
2.設(shè)置squid
squid的配置文件位于/usr/local/squid/etc/squid.conf,打開后會(huì)有英文的詳細(xì)說(shuō)明。暫時(shí)我們不需要去理解這個(gè)文件里面各個(gè)配置的含義,相信大家看到一大堆英文都會(huì)頭大的。大家只需要知道如何把squid按照自己的需求跑起來(lái),并且不出錯(cuò)就好。
我們先用rm命令把squid.conf刪掉。不用怕刪掉后找不回來(lái),還有一個(gè)默認(rèn)的squid.conf.default在呢。一般的linux程序,包括apache等,都會(huì)有一個(gè).default的默認(rèn)文件,方便大家恢復(fù)默認(rèn)設(shè)置,或者作為一個(gè)修改的參考。
squid.conf刪掉后,我們?cè)儆胿i squid.conf,新建這個(gè)文件,然后把下面的內(nèi)容帖進(jìn)去,保存
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
需要說(shuō)明的幾個(gè)參數(shù):
cache_mem 1024 MB (squid使用的內(nèi)存大小,注意必須要留下500M左右的內(nèi)存給系統(tǒng)使用,建議系統(tǒng)內(nèi)存2G,然后分配1G給squid)
cache_dir ufs /var/spool/squid 20480 16 256 (緩存的目錄,放在/var/spool/squid下面,大小是20G,第一級(jí)目錄是16個(gè),第二級(jí)目錄是256個(gè)。因?yàn)橐粋€(gè)目錄下面放置的文件和目錄數(shù)量有限制,所以這里必須要設(shè)置多個(gè)目錄,以適合squid存放大量文件的需要。目錄數(shù)千萬(wàn)別設(shè)置太大,否則會(huì)引起系統(tǒng)死機(jī))
memory_pools_limit 50 MB (內(nèi)存池,用來(lái)存放緩存文件的鏈表,方便高速查找文件存放的對(duì)應(yīng)位置,不需要太大。不懂就別管了)
cache_log /var/log/squid/cache.log(log文件的存放位置,必須要有讀寫權(quán)限,稍后說(shuō)到)
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
(上面的幾行指定了文件緩存的時(shí)間,可以指定某個(gè)域名,也可以指定某個(gè)文件類型。有更加多的域名或者文件類型就按照需要添加吧。-i是忽略大小寫,naizhao.com和.gif是文件類型,240是最小緩存的時(shí)間,1440是最大緩存時(shí)間,都是分鐘。這些先不用管,有需要的時(shí)候調(diào)整就好了。我們的口號(hào)是:先跑起來(lái))
acl d-domains dstdomain .naizhao.com(允許訪問的域名列表。如果要跑多個(gè)網(wǎng)站就添加多幾個(gè),用空格分開。naizhao.com前面有個(gè)英文的.,表示所有*.naizhao.com都允許。如果沒有這個(gè)點(diǎn),那么就只允許naizhao.com,訪問www.naizhao.com就會(huì)提示訪問被拒絕。)
cache_mgr silence.z@gmail.com (管理員的郵件地址,改為自己的)
cache_effective_user nobody
cache_effective_group nobody
(用來(lái)跑squid的用戶和用戶組。為了避免使用root帳號(hào)造成的不安全因素,大部分linux程序都會(huì)先用root運(yùn)行,然后馬上把運(yùn)行的用戶從root切換到其他用戶,這樣就算程序有漏洞被黑了,黑客也只能得到這個(gè)普通用戶的權(quán)限,對(duì)系統(tǒng)的危害將大大降低。保持默認(rèn)即可)
visible_hostname cnc.naizhao.com (服務(wù)器輸出的機(jī)器名字,多臺(tái)squid分布的時(shí)候這個(gè)很重要,通過(guò)設(shè)置多個(gè)不同的名字,很容易就可以找出哪臺(tái)服務(wù)器有問題)
coredump_dir /var/spool/squid (squid掛掉后,臨終遺言要放到哪里。不用管,一般人看不懂)
修改好配置文件后,我們還需要做一些最后的工作。
先建一個(gè)log目錄,用來(lái)存放log文件。按照squid.conf的設(shè)置,我們輸入下面的命令
mkdir /var/log/squid
chown nobody:nobody /var/log/squid
chown命令是設(shè)置所有者和組。剛才說(shuō)了,squid將會(huì)使用用戶nobody組nobody來(lái)運(yùn)行。nobody:nobody冒號(hào)前面的是用戶,后面的是用戶組。
還有squid的緩存目錄,同樣需要設(shè)置權(quán)限為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的緩存目錄結(jié)構(gòu)。(也就是剛才說(shuō)的16個(gè)一級(jí)目錄,256個(gè)二級(jí)目錄。本身這些文件夾不存在,需要通過(guò)squid的命令建立)
squid的命令在/usr/local/squid/sbin下,我們進(jìn)入這個(gè)目錄,然后看看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
沒有任何錯(cuò)誤提示,說(shuō)明目錄已經(jīng)建立成功了,我們可以用 ls /var/spool/squid看看效果。
最后,我們讓squid跑起來(lái)
./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,會(huì)看到Access Denied的錯(cuò)誤提示,說(shuō)明squid已經(jīng)正常跑起來(lái)了。
相關(guān)文章
Linux組基本介紹知識(shí)點(diǎn)總結(jié)
在本篇文章里小編給大家整理的是關(guān)于Linux組知識(shí)點(diǎn)的相關(guān)內(nèi)容,需要的朋友們參考學(xué)習(xí)下。2019-10-10簡(jiǎn)單測(cè)試Apache是如何完成負(fù)載均衡策略配置
公司的系統(tǒng)在最初設(shè)計(jì)的時(shí)候就已經(jīng)考慮到了負(fù)載均衡的規(guī)劃,此次 就是對(duì)負(fù)載均衡的一個(gè)簡(jiǎn)單測(cè)試2014-01-01centos 7中設(shè)置tomcat 7為系統(tǒng)服務(wù)的方法詳解
這篇文章主要給大家介紹了關(guān)于在centos 7中設(shè)置tomcat 7為系統(tǒng)服務(wù)的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。2017-06-06Linux磁盤掛載、分區(qū)、擴(kuò)容操作的實(shí)現(xiàn)方法
這篇文章主要介紹了Linux磁盤掛載、分區(qū)、擴(kuò)容操作的實(shí)現(xiàn)方法,詳細(xì)的介紹了這些基礎(chǔ)概念及其實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Ubuntu18.04安裝Nvidia顯卡驅(qū)動(dòng)教程(圖文)
這篇文章主要介紹了Ubuntu18.04安裝Nvidia顯卡驅(qū)動(dòng)教程(圖文),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Linux 使用init命令實(shí)現(xiàn)關(guān)機(jī),重啟,切換模式
這篇文章主要介紹了Linux 使用init命令實(shí)現(xiàn)關(guān)機(jī),重啟,切換模式的相關(guān)資料,需要的朋友可以參考下2017-03-03詳解linux后臺(tái)運(yùn)行和關(guān)閉、查看后臺(tái)任務(wù)
本篇主要介紹了inux后臺(tái)運(yùn)行和關(guān)閉、查看后臺(tái)任務(wù),詳細(xì)的介紹了fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令這些命令,有興趣的可以了解一下。2016-12-12