Linux下使用Squid搭建代理服务器
2016-03-03 18:23
615 查看
背景介绍:
一般情况下大家会使用CCProxy搭建代理服务器,这种方法简单易用,但是也存在较多问题:1.软件受注册限制只能允许3人使用;2.CCProxy的代理请求仅支持常见的GET和POST等,对于SVN通过代理去update等请求就不支持了;3.代理的认证方式仅有基本的Basic方式,其他的ntlm等认证方式不支持等。为了能够解决以上问题,尝试使用Squid在Linux上搭建了代理服务器,分享其中的搭建方法:
一、安装Squid:
如果系统中还没有装squid,按以下顺序输入命令后即可完成安装
1. 下载Squid安装包
<code class="hljs ruleslanguage has-numbering" style="word-break: break-all; line-height: normal; display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-array" style="word-break: break-all; box-sizing: border-box;"># wget http</span>:<span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">//www.squid-cache.org/Versi ... 3.0.STABLE18.tar.gz</span></code><ul class="pre-numbering" style="word-break: break-all; line-height: normal; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-color: rgb(221, 221, 221); text-align: right; background-color: rgb(238, 238, 238);"><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">1</li></ul>
2. 解压Squid安装包
<code class="hljs vala has-numbering" style="word-break: break-all; line-height: normal; display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;"># tar -zxvf squid-3.0.STABLE18.tar.gz</span></code><ul class="pre-numbering" style="word-break: break-all; line-height: normal; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-color: rgb(221, 221, 221); text-align: right; background-color: rgb(238, 238, 238);"><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">1</li></ul>
3. 配置Squid
<code class="hljs brainfuck has-numbering" style="word-break: break-all; line-height: normal; display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">#</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">cd</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">squid</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">3</span><span class="hljs-string" style="word-break: break-all; color: rgb(0, 136, 0); box-sizing: border-box;">.</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">0</span><span class="hljs-string" style="word-break: break-all; color: rgb(0, 136, 0); box-sizing: border-box;">.</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">STABLE18</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">//配置Squid代理安装路径之类的</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">#</span><span class="hljs-string" style="word-break: break-all; color: rgb(0, 136, 0); box-sizing: border-box;">.</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">/configure</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">prefix=/usr/local/squid</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">sysconfdir=/usr/local/squid/etc</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">bindir=/usr/local/squid/bin</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">sbindir=/usr/local/squid/sbin</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">mandir=/usr/local/squid/share/man</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">gnuregex</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">carp</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">async</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">io=80</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">removal</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">policies=heap</span><span class="hljs-string" style="word-break: break-all; color: rgb(0, 136, 0); box-sizing: border-box;">,</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">lru</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">icmp</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">delay</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">pools</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">useragent</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">log</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">referer</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">log</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">kill</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">parent</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">hack</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">snmp</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">arp</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">acl</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">htcp</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">cache</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">digests</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">default</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">err</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">language=Simplify_Chinese</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">err</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">languages="Simplify_Chinese"</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">poll</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">linux</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">netfilter</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">disable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">ident</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">lookups</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">underscores</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">auth="basic"</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">basic</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">auth</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">helpers="NCSA"</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">external</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">acl</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">helpers="ip_user"</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">enable</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">x</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">accelerator</span><span class="hljs-literal" style="word-break: break-all; color: rgb(0, 102, 102); box-sizing: border-box;">-</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">vary</span></code><ul class="pre-numbering" style="word-break: break-all; line-height: normal; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-color: rgb(221, 221, 221); text-align: right; background-color: rgb(238, 238, 238);"><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">1</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">2</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">3</li></ul>
4. 编译
<code class="hljs vala has-numbering" style="word-break: break-all; line-height: normal; display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;"># make</span></code><ul class="pre-numbering" style="word-break: break-all; line-height: normal; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-color: rgb(221, 221, 221); text-align: right; background-color: rgb(238, 238, 238);"><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">1</li></ul>
5. 安装
<code class="hljs ruleslanguage has-numbering" style="word-break: break-all; line-height: normal; display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-array" style="word-break: break-all; box-sizing: border-box;"># make install</span><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;">//安装Squid代理软件</span></code><ul class="pre-numbering" style="word-break: break-all; line-height: normal; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-color: rgb(221, 221, 221); text-align: right; background-color: rgb(238, 238, 238);"><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">1</li></ul>
二、配置Squid
1. Squid的配置文件保存在/usr/local/squid/etc的squid.conf文件中
2. 配置Squid项:
a. 启动squid时如果不在squid.conf中设置主机名将无法启动,必须要设置visible_hostname这个参数值,本文中,设置的主机名是服务器的真实机器名powersite,在squid.conf中找到该项并修改:<code class="hljs vala has-numbering" style="word-break: break-all; line-height: normal; display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;">#visible_hostname linuxserver</span></code><ul class="pre-numbering" style="word-break: break-all; line-height: normal; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-color: rgb(221, 221, 221); text-align: right; background-color: rgb(238, 238, 238);"><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">1</li></ul>b. 开启http_access的访问权限
<code class="hljs vala has-numbering" style="word-break: break-all; line-height: normal; display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;">#http_access allow all</span></code><ul class="pre-numbering" style="word-break: break-all; line-height: normal; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-color: rgb(221, 221, 221); text-align: right; background-color: rgb(238, 238, 238);"><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">1</li></ul>
三、配置Squid的密码验证功能
1. 创建密码文件。
密码和用户名存放在/etc/squid/squid_passwd文件中,并需要将这个文件的权限设置为其它用户只读。<code class="hljs vala has-numbering" style="word-break: break-all; line-height: normal; display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;"># touch /etc/squid/squid_passwd</span><span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;"># chmod o+r /etc/squid/squid_passwd</span></code><ul class="pre-numbering" style="word-break: break-all; line-height: normal; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-color: rgb(221, 221, 221); text-align: right; background-color: rgb(238, 238, 238);"><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">1</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">2</li></ul>
2. 使用htpasswd添加用户,并设置密码。
添加用户不需要对squid进行重启操作,我创建的用户名是setest<code class="hljs php has-numbering" style="word-break: break-all; line-height: normal; display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-comment" style="word-break: break-all; color: rgb(136, 0, 0); box-sizing: border-box;"># htpasswd /etc/squid/squid_passwd setest</span><span class="hljs-keyword" style="word-break: break-all; color: rgb(0, 0, 136); box-sizing: border-box;">New</span>password: Re-type password<span class="hljs-keyword" style="word-break: break-all; color: rgb(0, 0, 136); box-sizing: border-box;">for</span>user setest</code><ul class="pre-numbering" style="word-break: break-all; line-height: normal; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-color: rgb(221, 221, 221); text-align: right; background-color: rgb(238, 238, 238);"><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">1</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">2</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">3</li></ul>
3. 找到ncsa_auth命令的具体位置,后面的配置需要用到绝对路径
<code class="hljs vala has-numbering" style="word-break: break-all; line-height: normal; display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;"># which ncsa_auth</span>/usr/sbin/ncsa_auth</code><ul class="pre-numbering" style="word-break: break-all; line-height: normal; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-color: rgb(221, 221, 221); text-align: right; background-color: rgb(238, 238, 238);"><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">1</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">2</li></ul>如果找不到ncs_auth的话,可以直接去squid的压缩包解压目录中拷贝一份到/usr/sbin/ncsa_auth,例如:
<code class="hljs autohotkey has-numbering" style="word-break: break-all; line-height: normal; display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">cp helpers/basic_auth/NCSA/ncs<span class="hljs-built_in" style="word-break: break-all; color: rgb(102, 0, 102); box-sizing: border-box;">a_auth</span>/usr/sbin/ncs<span class="hljs-built_in" style="word-break: break-all; color: rgb(102, 0, 102); box-sizing: border-box;">a_auth</span></code><ul class="pre-numbering" style="word-break: break-all; line-height: normal; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-color: rgb(221, 221, 221); text-align: right; background-color: rgb(238, 238, 238);"><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">1</li></ul>
4. 在squid.conf文件中定义验证程序了,创建名为ncsa_users的ACL并加入关键字REQUIRED来强制让Squid使用NCSA验证方法。
<code class="hljs vala has-numbering" style="word-break: break-all; line-height: normal; display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"><span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;">#</span><span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;"># 在squid.conf的auth_param部分添加下列内容</span><span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;">#</span>auth_param basic program /usr/sbin/ncsa_auth /etc/squid/squid_passwd<span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;">#</span><span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;"># 将以下ACL添加到squid.conf的ACL配置部分</span><span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;">#</span>acl ncsa_users proxy_auth REQUIRED<span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;">#</span><span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;"># 将这些内容添加到squid.conf的http_access配置部分</span><span class="hljs-preprocessor" style="word-break: break-all; color: rgb(68, 68, 68); box-sizing: border-box;">#</span>http_access allow ncsa_users</code><ul class="pre-numbering" style="word-break: break-all; line-height: normal; margin: 0px; padding: 6px 0px 40px; box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; border-right-width: 1px; border-right-color: rgb(221, 221, 221); text-align: right; background-color: rgb(238, 238, 238);"><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">1</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">2</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">3</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">4</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">5</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">6</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">7</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">8</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">9</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">10</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">11</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">12</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">13</li><li style="word-break: break-all; box-sizing: border-box; padding: 0px 5px;">14</li></ul>
四、启动Squid
1. /usr/local/squid/sbin目录下的squid为运行文件。 2. 第一次运行时,先运行squid -z创建缓存文件夹。缓存文件夹在/usr/local/squid/var下创建,因此创建缓存前还需运行chmod 777 /usr/local/squid/var给该文件夹权限。 再运行squid -d 1开启squid即可。 3. 如果要关闭squid,运行squid -k shutdown则是安全关闭。
相关文章推荐
- stunnel + squid 过墙
- 在团800运维工作总结之squid做回源图片的二级缓存
- squid 缓存Internet 软件
- Skype for Business Server 2015完整部署(边缘/反向代理/移动端)
- nginx入门(1)——反向代理
- nginx入门(1)——反向代理
- Nginx反向代理的配置
- nginx反向代理--upstream模块
- Nginx 反向代理学习(一)
- Apache 反向代理与修改网页内容
- 【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器
- 反向代理的一些工作原理。
- 系统原理分析架构-五-squid(反代理即web缓存服务器)
- 系统原理分析架构-四-squid(简介及正向代理)
- varnish和squid的对比
- 尝试在非root用户下进行nginx的反向代理-1
- Nginx反向代理上传大文件报错(failed to load resource : net :: ERR_CONNECTION_RESET)
- squid
- Apache配置反向代理
- nginx反向代理,负载均衡