成都 企業(yè)網(wǎng)站建設(shè)公司價(jià)格百度站長(zhǎng)管理平臺(tái)
參考:大部分摘自此文,做了少部分修改
Squid 是一個(gè)功能全面的緩存代理服務(wù)器,它支持著名的網(wǎng)絡(luò)協(xié)議像 HTTP,HTTPS,FTP 等等。將 Squid 放在網(wǎng)頁(yè)服務(wù)器的前端,通過(guò)緩存重復(fù)請(qǐng)求,過(guò)濾網(wǎng)絡(luò)流量等,可以極大地提高服務(wù)器的性能。
這篇指南將會(huì)講解如何在 CentOS 7 上建立 Squid,并且配置火狐和 Google 瀏覽器來(lái)使用這個(gè)代理服務(wù)器。
一、在 CentOS 上安裝 Squid
Squid 軟件包包含在默認(rèn)的 CentOS 7 源倉(cāng)庫(kù)中。想要安裝它,以 sudo 用戶身份運(yùn)行下面的命令:
yum install squid -y
一旦安裝完成,啟動(dòng)并開(kāi)啟 Squid 服務(wù):
service squid start
想要驗(yàn)證安裝是否成功,輸入下面的命令,將會(huì)打印出服務(wù)的狀態(tài):
service squid status
● squid.service - Squid caching proxyLoaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)Active: active (running) since Sat 2019-07-13 16:47:56 UTC; 12s ago
...
二、配置 Squid
Squid 通過(guò)編輯 /etc/squid/squid.conf
文件進(jìn)行配置。新增文件可以使用"include"指令添加到配置文件中。
在做任何修改之前,使用cp
命令備份原來(lái)的配置文件:
cp /etc/squid/squid.conf{,.orginal}
想要編輯文件,使用文本編輯器打開(kāi)它:
vim /etc/squid/squid.conf
默認(rèn)情況下,Squid 被配置成在服務(wù)器所有網(wǎng)絡(luò)接口上監(jiān)聽(tīng)端口3128
。
如果你想修改端口號(hào),并且設(shè)置監(jiān)聽(tīng)接口,定位到 http_port
處,并且指定接口 IP 地址和新端口。如果沒(méi)有接口指定,Squid 將監(jiān)聽(tīng)所有網(wǎng)絡(luò)接口。
/etc/squid/squid.conf
# Squid normally listens to port 3128
http_port IP_ADDR:PORT
在所有接口上和默認(rèn)端口上運(yùn)行 Squid 對(duì)大部分用戶都很適用。
你可以使用 Access Control Lists (ACLs)來(lái)控制 Squid 服務(wù)器的訪問(wèn)。
默認(rèn)情況下,Squid 僅僅允許從本地主機(jī)和本地網(wǎng)絡(luò)來(lái)的訪問(wèn)。
如果所有將要使用代理服務(wù)器的客戶端都有一個(gè)固定 IP 地址,你可以創(chuàng)建一個(gè) 包含允許 IP 地址的 ACL。
不用在主要配置中添加 IP 地址,我們可以創(chuàng)建一個(gè)新配置文件,用來(lái)配置地址: /etc/squid/allowed_ips.txt
192.168.33.1
# All other allowed IPs
一旦完成,打開(kāi)主要配置文件,并且創(chuàng)建一個(gè)新的 ACL ,命名為allowed_ips
,并且使用http_access
指令允許它訪問(wèn): /etc/squid/squid.conf
# ...
acl allowed_ips src "/etc/squid/allowed_ips.txt"
# ...
http_access allow localnet
http_access allow localhost
http_access allow allowed_ips
# And finally deny all other access to this proxy
http_access deny all
這個(gè)http_access
規(guī)則的順序很重要。確認(rèn)你在http_access deny all
之前添加了這一行。
http_access
指令類(lèi)似于防火墻規(guī)則。Squid 從上到下讀取規(guī)則,并且后面匹配的規(guī)則不會(huì)被處理。
不管你對(duì)配置文件做了什么修改,你需要重新啟動(dòng) Squid 服務(wù)器來(lái)使修改生效:
service squid restart
三、Squid 設(shè)置賬號(hào)密碼進(jìn)行身份驗(yàn)證
Squid 可以使用不同的后端,包括 Samba,LDAP 和 HTTP 基本驗(yàn)證來(lái)驗(yàn)證用戶。
在這個(gè)例子中,我們配置 Squid 使用基本驗(yàn)證。它是一個(gè)簡(jiǎn)單的驗(yàn)證方法,內(nèi)置在 HTTP 協(xié)議中。
我們將使用openssl
來(lái)生成密碼,并且附加username:password
對(duì)到文件/etc/squid/htpasswd
文件中,并且顯示出來(lái):(密碼只能設(shè)置 8 位,超過(guò) 8 位會(huì)忽略超出的)
printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd
例如,創(chuàng)建一個(gè)用戶名稱(chēng)為mike
,并且密碼為Pz$lPk76
,你將要運(yùn)行:
printf "mike:$(openssl passwd -crypt 'Pz$lPk76')\n" | sudo tee -a /etc/squid/htpasswd
mike:2nkgQsTSPCsIo
下一步是配置 Squid 去啟用 HTTP 基本驗(yàn)證,并且使用這個(gè)文件。
打開(kāi)主要配置文件,添加下面的內(nèi)容: /etc/squid/squid.conf
...
# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost# 自己添加的部分 start
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/htpasswd
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
# 自己添加的部分 end# And finally deny all other access to this proxy
http_access deny all
...
前面三行我們創(chuàng)建了一個(gè) ACL 名稱(chēng)為 authenticated
, 最后一行允許通過(guò)驗(yàn)證用戶訪問(wèn)。
重啟 Squid 服務(wù):
service squid restart
?四、使用 python 的 requests 模塊進(jìn)行驗(yàn)證
import requestsproxy_url = 'http://mike:Pz$lPk76@SERVER_IP:PORT'
proxy = {'http': proxy_url, 'https': proxy_url}
rst = requests.get('https://baidu.com', proxies = proxy)
print(rst.status_code)
查看日志是否正確
tail -f /var/log/squid/access.log