其實以前配過一個squid,只是因爲太懶,網上隨便搜了一個教程,用了默認端口而且沒有添加用戶認證。某天不幸的被爬蟲掃到,被用來發了半個月的垃圾郵件。。直到有一天登陸郵箱,看到了一大坨警告郵件,才意識到問題的嚴重。驚了個呆以後,趕忙重配一遍-.-php
我這裏是用squid配置了一個帶用戶認證的普通代理。html
安裝過程十分簡便,只須要安裝一下squid,一條命令搞定。我這裏裝的是squid3.3。windows
yum install squid
rpm -qa | grep squid squid-3.3.8-12.el7_0.x86_64
修改squid的配置文件 /etc/squid/squid.conf瀏覽器
主要就是配置一下端口,緩存,日誌和訪問規則。緩存
http_port 3712 cache_mem 64 MB maximum_object_size 4 MB cache_dir ufs /var/spool/squid 100 16 256 access_log /var/log/squid/access.log http_access allow all visible_hostname squid.chao
在第一次啓動以前或者修改了cache路徑以後,須要從新初始化cache目錄。服務器
squid -z
systemctl start squid
在瀏覽器中修改代理配置便可。測試
在windows中:ui
Internet選項 -> 鏈接 -> 局域網鏈接 -> 代理服務器spa
在macOSX中:代理
Safari -> 偏好設置 -> 代理 -> Web代理
而後輸入你的代理地址和端口,就能夠正常工做了。
我從網上看到一個很是簡單的方法,能夠用來快速測試你的代理是否正常工做。首先打開百度,而後搜索ip。若是出來的是你代理的那臺機器的ip,那麼恭喜你,一大波垃圾郵件即將趕來。
爲了防止咱們的代理被爬蟲掃到而且被用於不法用途,咱們很是有必要爲咱們的squid添加用戶認證。事實上我剛配的代理,沒過多久就已然被掃到。
我從個人access.log裏面看到。然而此時我尚未添加任何認證機制,幸虧我沒使用認端口,否則個人郵箱又會收到一大坨告警郵件了。。
1439106533.703 0 89.102.9.196 TCP_DENIED/403 3739 GET http://www2.praguerentacar.com/proxy/detectproxy.php - HIER_NONE/- text/html 1439106539.302 0 89.102.9.196 TCP_DENIED/403 3724 GET http://www2.intimnosti.cz/proxy/detectproxy.php - HIER_NONE/- text/html 1439106544.881 0 89.102.9.196 TCP_DENIED/403 3706 GET http://93.185.96.50/proxy/detectproxy.php - HIER_NONE/- text/html 1439106550.453 0 89.102.9.196 TCP_DENIED/403 3712 GET http://www2.nuabi.com/proxy/detectproxy.php - HIER_NONE/- text/html
咱們這裏經過ncsa認證模塊來爲咱們的squid添加認證。爲何我選擇ncsa呢,由於我從網上搜到的大多用了這個方式。。
首先咱們得配置咱們的訪問用戶的帳戶信息。最後一個參數是用戶名,能夠替換成任何你喜歡的名字~
htpasswd -c /etc/squid/passwd chao
若是找不到htpasswd,就先裝個Apache。yum install httpd。 而後就能使用htpasswd了。
有了賬戶文件以後,咱們從新配置咱們的squid。在squid.conf裏面,把
http_access allow all
改爲
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd auth_param basic children 5 auth_param basic realm chao's squid server auth_param basic credentialsttl 2 hours acl myacl proxy_auth REQUIRED http_access allow myacl http_access deny all
最後重啓squid就能夠啦。
systemctl restart squid
如今當你使用代理訪問頁面的時候,會先彈出一個提示框,讓你輸入用戶名密碼。而後就能夠繼續訪問了。
有些人可能一開始對原理以及配置的詳細介紹並不感冒,只是想讓代理先跑起來再說。至少我本人就是這樣子的。。因此,我把這塊放在了最後。
如今,就開始介紹一下上面配置的具體內容。固然參考官網會更加詳細準確。
http_port 3712 這個指定了咱們代理的端口。
cache_mem 64 MB 內存中的緩存大小
cache_dir ufs /var/spool/squid 100 16 256 緩存文件夾,默認是隻在內存中進行緩存的。這裏指定緩存大小爲100M,第一層子目錄爲16個,第二層爲256。
maximum_object_size 4 MB 最大被緩存文件大小,這個配合上面的cache_dir使用,只做用於緩存到磁盤的文件。
access_log /var/log/squid/access.log 訪問日誌
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd 指定認證程序以及帳戶文件
auth_param basic children 5 認證程序同時跑的個數
auth_param basic realm chao's squid server 客戶端在使用代理時,輸入密碼時彈出來的提示框中的描述文字。
auth_param basic credentialsttl 2 hours 認證的持續時間
acl myacl proxy_auth REQUIRED 對myacl使用外部程序進行認證
http_access allow myacl 容許myacl中的成員訪問
http_access deny all 拒絕全部其它訪問
visible_hostname squid.chao 代理機名字