1. 程式人生 > >linux下配置squid 伺服器,最簡單使用方式

linux下配置squid 伺服器,最簡單使用方式

linux下配置squid


1、什麼是squid

Squid cache(簡稱為Squid)是一個流行的自由軟體(GNU通用公共許可證)的代理伺服器和Web快取伺服器。Squid有廣泛的用途,從作為網頁伺服器的前置cache伺服器快取相關請求來提高Web伺服器的速度,到為一組人共享網路資源而快取全球資訊網,域名系統和其他網路搜尋,到通過過濾流量幫助網路安全,到區域網通過代理上網。Squid主要設計用於在Unix一類系統執行。

Squid的發展歷史相當悠久,功能也相當完善。除了HTTP外,對於FTP與HTTPS的支援也相當好,在3.0 測試版中也支援了IPv6。

squid可以做代理也可以做快取;

squid快取不僅可以節省寶貴的頻寬資源,也可以大大降低伺服器的I/O

squid不僅可以做正向代理,又可以做反向代理。

正向代理,squid後面是客戶端,客戶端上網要通過Squid去上;反向代理,squid後面是伺服器,伺服器返回給使用者資料需要走squid。

正向代理用在企業的辦公環境中,員工上網需要通過squid代理來上網,這樣可以節省網路頻寬資源。而反向代理用來搭建網站靜態項(圖片、html、流媒體、js、css等)的快取伺服器,它用於網站架構中。


2、搭建squid正向代理

官方網站為 http://www.squid-cache.org/

安裝命令:yum install -y squid

squid -v  檢視版本以及編譯引數(Squid Cache: Version 3.1.10)

> /etc/squid/squid.conf    清空配置檔案;

vim /etc/squid/squid.conf

加入如下配置:
 
http_port 3128
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443
acl Safe_ports port 80 8080
acl Safe_ports port 21
acl Safe_ports port 443
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 localnet
http_access allow localhost
http_access allow all
cache_dir aufs /data/cache 1024 16 256
cache_mem 128 MB
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern \.(jpg|png|gif|mp3|xml) 1440    50%     2880    ignore-reload
refresh_pattern .               0       20%     4320
############################## 到此結束


配置解釋:

acl Safe_ports port 80 8080         # http的埠

acl Safe_ports port 21          # ftp的埠

acl Safe_ports port 443         # https的埠

cache_dir aufs /data/cache 1024 16 256    #快取空間1024M大小 16個一級目錄,256個子目錄

cache_mem 128 MB    #快取可以使用的記憶體大小;放在記憶體中訪問資料速度快;

mkdir  /data/cache    #建立快取目錄

chown -R squid:squid /data/cache    #更改快取目錄許可權

squid -z    #初始化快取目錄,squid新版本3.1可以省略

/etc/init.d/squid start    #啟動squid服務

squid  -k check    #可以檢測配置檔案是否有錯;可以簡寫為-kche

squid -k rec    #可以重新載入配置,reconfig的簡寫;

service squid restart    #重啟squid服務;重啟經常性的很慢,可以先killall squid,在啟動服務;


檢測配置檔案,報錯:Could not determine this machines public hostname. Please configure one or set 'visible_hostname'.沒有定義公共主機名,需要配置visible_hostname 視覺化主機名;(squid出問題,會在瀏覽器顯示squid的主機名)

在配置檔案中加入:visible_hostname yonglinux 就不會報錯;
 
[[email protected] ~]# squid -k check
2015/05/25 03:09:18| WARNING: Could not determine this machines public hostname. Please configure one or set 'visible_hostname'.
2015/05/25 03:09:18| WARNING: Could not determine this machines public hostname. Please configure one or set 'visible_hostname'.
squid: ERROR: No running copy


在另一臺linux進行測試:curl -x192.168.22.30:3128 www.qq.com   

指定代理伺服器192.168.22.30的3128埠訪問網站,前提保證代理伺服器能訪問網站;

設定代理伺服器的作用是讓區域網的使用者訪問網站速度快,另一方面可以控制使用者訪問哪些網站;上班期間禁止員工看視訊,購物;


訪問圖片,測試快取,快取的時間,X-Cache為HIT擊中,說明squid快取起作用;第一次為MISS;
 
[[email protected] ~]# curl -x192.168.22.30:3128 'http://www.51cto.com/images/home/images/logo.jpg' -I
HTTP/1.0 200 OK
Server: Tengine
Date: Sun, 24 May 2015 13:42:43 GMT
Content-Type: image/jpeg
Content-Length: 5309
Last-Modified: Wed, 22 Jan 2014 07:55:12 GMT
Expires: Sun, 31 May 2015 13:42:43 GMT
Cache-Control: max-age=604800
Load-Balancing: web39
Accept-Ranges: bytes
Age: 29661
X-Cache: HIT from yonglinux
X-Cache-Lookup: HIT from yonglinux:3128
Via: 1.0 yonglinux (squid/3.1.10)
Connection: keep-alive


設定squid代理伺服器只代理某幾個域名 

設定域名白名單,允許baidu sohu可以訪問,其他都拒絕;

vim /etc/squid/squid.conf    下面的內容加入到squid配置檔案acl下面;

acl http proto HTTP

acl good_domain dstdomain .baidu.com .sohu.com

http_access allow http good_domain

http_access deny http !good_domain


使用curl測試白名單,baidu、sohu返回狀態碼為200 OK,qq不在白名單則返回403;
 
[[email protected] ~]# curl -x192.168.22.30:3128 www.sohu.com -I
HTTP/1.0 200 OK
Content-Type: text/html
Date: Sun, 24 May 2015 13:57:32 GMT
Server: SWS
Vary: Accept-Encoding
Cache-Control: no-transform, max-age=120
Expires: Sun, 24 May 2015 13:59:32 GMT
Last-Modified: Sun, 24 May 2015 13:57:21 GMT
X-RS: 11172604.20347654.12509576
FSS-Cache: HIT from 9861864.17726194.11198816
X-Cache: MISS from yonglinux
X-Cache-Lookup: MISS from yonglinux:3128
Via: 1.0 yonglinux (squid/3.1.10)
Connection: keep-alive
 
[[email protected] ~]# curl -x192.168.22.30:3128 www.qq.com -I
HTTP/1.0 403 Forbidden
Server: squid/3.1.10
Mime-Version: 1.0
Date: Sun, 24 May 2015 22:04:30 GMT
Content-Type: text/html
Content-Length: 3254
X-Squid-Error: ERR_ACCESS_DENIED 0
Vary: Accept-Language
Content-Language: en
X-Cache: MISS from yonglinux
X-Cache-Lookup: NONE from yonglinux:3128
Via: 1.0 yonglinux (squid/3.1.10)
Connection: keep-alive


限制某些域名不能通過代理訪問

設定域名黑名單,不允許訪問taobao.com jd.com;其他的都允許;

vim /etc/squid/squid.conf  下面的內容加入到squid配置檔案acl下面

acl http proto HTTP

acl bad_domain dstdomain .taobao.com .jd.com

http_access deny http bad_domain


使用curl測試黑名單,taobao、jd返回狀態碼為403,51cto不在黑名單返回200 OK;
 
[[email protected] ~]# curl -x192.168.22.30:3128 www.taobao.com -I
HTTP/1.0 403 Forbidden
Server: squid/3.1.10
Mime-Version: 1.0
Date: Sun, 24 May 2015 21:35:22 GMT
Content-Type: text/html
Content-Length: 3266
X-Squid-Error: ERR_ACCESS_DENIED 0
Vary: Accept-Language
Content-Language: en
X-Cache: MISS from yonglinux
X-Cache-Lookup: NONE from yonglinux:3128
Via: 1.0 yonglinux (squid/3.1.10)
Connection: keep-alive
 
[[email protected] ~]# curl -x192.168.22.30:3128 www.jd.com -I
HTTP/1.0 403 Forbidden
Server: squid/3.1.10
Mime-Version: 1.0
Date: Sun, 24 May 2015 21:35:32 GMT
Content-Type: text/html
Content-Length: 3254
X-Squid-Error: ERR_ACCESS_DENIED 0
Vary: Accept-Language
Content-Language: en
X-Cache: MISS from yonglinux
X-Cache-Lookup: NONE from yonglinux:3128
Via: 1.0 yonglinux (squid/3.1.10)
Connection: keep-alive

[[email protected] ~]# curl -x192.168.22.30:3128 www.51cto.com -I
HTTP/1.0 200 OK
Server: Tengine
Date: Sun, 24 May 2015 13:31:21 GMT
Content-Type: text/html
Vary: Accept-Encoding
Load-Balancing: web39
X-Cache: MISS from yonglinux
X-Cache-Lookup: MISS from yonglinux:3128
Via: 1.0 yonglinux (squid/3.1.10)
Connection: keep-alive


使用IE瀏覽器測試,需要設定代理伺服器,選單欄——工具——Internet選項——連線——區域網設定,勾選代理伺服器——高階,填寫squid代理伺服器地址和埠號;

訪問jd.com taobao.com,提示錯誤,訪問被拒絕,由之前定義的視覺化主機名發出的;訪問其他網站正常;


3、搭建squid反向代理

vim /etc/squid/squid.conf  #如下變更

之前增加的域名白/黑名單相關配置去掉;

http_port 3128 改為 http_port 80 accel vhost vport

增加如下內容:

cache_peer 14.17.42.40 parent 80 0 originserver name=a

cache_peer 180.97.33.107 parent 80 0 originserver name=b

cache_peer_domain a www.qq.com

cache_peer_domain b www.baidu.com

監聽的3128埠改為80埠;IE瀏覽器代理伺服器的埠也要更改為80;

14.17.42.40為ping www.qq.com的ip地址;

如果是squid要代理一臺web上的所有域名,那麼就寫成這樣: cache_peer 192.168.10.111 80 0 originserver  #只需要這一行,cache_peer_domain  可以省略;

/etc/init.d/squid restart

IE瀏覽器測試反向代理,訪問baidu.com、qq.com可以訪問,其他網站提示:目前無法將您的請求進行轉送操作


使用curl測試

[[email protected] ~]# curl -x192.168.22.30:80 www.qq.com -I
HTTP/1.0 200 OK
Server: squid/3.4.1
Date: Sun, 24 May 2015 14:22:47 GMT
Content-Type: text/html; charset=GB2312
Vary: Accept-Encoding
Vary: Accept-Encoding
Expires: Sun, 24 May 2015 14:23:47 GMT
Cache-Control: max-age=60
Vary: Accept-Encoding
Vary: Accept-Encoding
X-Cache:
HIT from shenzhen.qq.com
X-Cache:
MISS from yonglinux
X-Cache-Lookup: MISS from yonglinux:80
Via: 1.0 yonglinux (squid/3.1.10)
Connection: keep-alive

訪問qq.com返回HIT from shenzhen.qq.com,說明qq.com本身也做了反向代理;

squid還有很多配置,後續會陸續更新;

相關推薦

linux配置squid 伺服器簡單使用方式

linux下配置squid 1、什麼是squid Squid cache(簡稱為Squid)是一個流行的自由軟體(GNU通用公共許可證)的代理伺服器和Web快取伺服器。Squid有廣泛的用途,從作為網頁伺服器的前置cache伺服器快取相關請求來提高Web伺服器的速度,到為一組人共享網路資源而快取全球

Linux系統配置Nodejs環境的簡單步驟部署多個thinkjs(nodejs)專案

發現一臺伺服器部署管理多個nodejs服務,可以採用二級域名weekly.mwcxs.top,也可以採用固定字尾www.mwcxs.top/weekly的方式,本文先從固定字尾的方式部署管理多個nodejs服務。 1、去官網下載和自己系統匹配的檔案: 建議去英文網站下載 ,因為中文這邊沒有

linux配置squid代理

linux squid 代理工具、×××工具yum install -y squid (安裝squid服務)配置正向代理(企業中用於訪問控制等)vim /etc/squid/squid.conf (編輯squid配置文件) ...... acl http proto HTTP

Linux配置日誌伺服器

Linux配置日誌伺服器 日誌伺服器配置檔案:/etc/rsyslog.conf 伺服器端: 伺服器IP如下: 編輯日誌伺服器的配置檔案: 這裡UDP或者TCP任選一個 將註釋的兩句複製一遍,然

Linux停Tomcat伺服器出現Connection refused錯誤解決辦法

錯誤內容如下 : 2010-9-19 16:09:58 org.apache.catalina.startup.Catalina stopServer 嚴重: Catalina.stop:  java.net.ConnectException: Connectio

LINUX 配置郵件伺服器過程(實踐)

配置 sendmail.mc : 開啟/etc/mail/sendmail.mc檔案, 找到: dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl dnl define(`confAUTH_MECHANISMS', `EXTE

Linux配置FTP伺服器(心得)

溫故知新。也不是第一次配置FTP了,之前第一次配置FTP的時候沒什麼阻礙,後來換了個電腦又配置了一次,搞了一個晚上都才配置完成。故特意寫這篇文章來提示下後人,也為了以後我忘了能回看怎麼配置。 進入正題!!! 在Linux下首先你得有網路。 測試網路

Linux設定終端解析度全的VGA程式碼和解析度對照表

一般安裝完linux後預設的kernel給的tty解析度是非常有限的,解決的方法就是給kernel傳遞VGA引數。對應的要修改的配置檔案為 /etc/grub.conf,(或者 /boot/grub/grub.conf)就是在grub.conf啟動列表的kernel最後新增vga引數 vga=xxxx, 

Linux配置samba伺服器

知識點,samba有五種安全級別,它們分別是:       share:不需要samba賬戶就可登陸samba伺服器       user:需要新增samba賬戶才可以登陸samba伺服器       server:由另外一臺samba伺服器來對使用者進行身份驗證。    

Linux 配置Git 伺服器-使用SSH連線

最新需要和朋友作一個自己的私有專案。不想用github公開程式碼,所以就想到了自己加上git 伺服器。 網上查了一些資料,各個博主的資料還是很全的,但是自己架設的時候還是遇到了一些困難,我吧我是如何配置的方法寫下來 本人使用的是Ubuntu 14 的系統 有密碼 1 安

thinkphp 5 自動生成模組簡單方式一句程式碼

  直接在專案入口檔案中加上最後一句就夠了     可以不依賴自動生成檔案,直接使用預設目錄生成模組,例如: // 定義應用目錄 define('APP_PATH', __DIR__ . '/../application/'); // 載入框架引

linux ubuntu 配置雙網絡卡 簡單方式

第一種方法 第一種方法是在路由表中新增路由規則 修改網絡卡配置檔案 開啟檔案: sudo vi /etc/network/interfaces 新增如下: auto eno1 iface eno1 inet static address 19

簡單有效的關於linux配置Git操作免登錄ssh公鑰

_for pla 復制 進入目錄 new for interval put 倉庫 ssh-keygen -t rsa -b 4096 -C “[email protected]” 然後回車三連擊… 進入目錄(執行cd ~/.ssh),可以看到當前目錄下多出兩個文件 id

簡單有效的關於linux配置Git操作免登入ssh公鑰

ssh-keygen -t rsa -b 4096 -C “[email protected]” 然後回車三連擊… 進入目錄(執行cd ~/.ssh),可以看到當前目錄下多出兩個檔案 id_rsa.pub 和 id_rsa 帶字尾是公鑰,不帶是私鑰 用vi 編輯器將 id_r

Linux配置MySQL主從同步(不復雜簡單明瞭)

明人不說暗話,直接進入正題 一、準備工作 假設兩個伺服器IP如下: 主伺服器:44.92.163.112    -Linux 從伺服器:114.74.22.11     -Linux 注意: 1、主從資料庫版本最好一致; 2、主從資料庫內資料保持一致;

linux安裝mysql5.7.17及簡單配置

http mkdir exp 重要 ble ges 選擇 bsp 統一 1.mysql5.7.17安裝在/usr/local/mysql目錄裏面,也可以安裝在其他地方 (安裝包最好與Linux系統一樣,eg;64位的就是“mysql-5.7.17-linux-glibc2.

可以開啟組策略的情況簡單的 本地組策略編輯器 重置

管理伺服器上面的組策略管理器,可能大家都會改,所以最好先匯出組策略配置:匯出列表,修改之前記住你改了什麼這是個好習慣。 進入正題:網上很多重置動作都很重,但是如果我能開啟組策略,這種情況下的重置就非常簡單了:   點選下圖所有設定: 點選狀態,兩次,直到已開啟的選

linux配置resin伺服器啟動專案

第一步:安裝resin伺服器 第二步:配置resin安裝路徑和JDK的路徑 第三步:web專案指向resin伺服器 好啦,開始上程式碼! 1.安裝resin,我這裡用到的是4.0.36版本,我安裝在home目錄,cd home,然後輸入 [[email protecte

Linux 配置 Hadoop2.x 高可用 zookeeper Yarn詳細步驟。

此係列文章是探索大資料道路的記錄,有些記錄是為了備忘,有些記錄是為了學習心得內容,有些是為了給大家提供一個好的學習資料。持續更新中…大家也可以到我的私人blog檢視該系列文章。blog.cuteximi.com ,也可以關注【碼省理工】公眾號與我交流技術。

同一伺服器配置多域名去掉Tomcat埠號Nginx反向代理做轉發

1. 開啟nginx,資源管理器檢視開啟是否成功,會有兩個nginx.exe程序,瀏覽器輸入127.0.0.1可以訪問到nginx歡迎介面。 2. 在nginx配置檔案nginx.conf中配置多個虛擬主機,即server,用於存放不同的域名(server_name),虛擬