[原创] 在腾讯云的轻量应用服务器Lighthouse上用Squid开启HTTP代理服务

前段时间我看到腾讯云的促销广告,其“轻量应用服务器”首年的费用才85元(配置:1核CPU,2GB内存,50GB磁盘,带宽4Mbps,流量包500GB/月),可谓相当便宜,于是入手一台,安装了Ubuntu系统,用于一些简单的测试场景。

轻量应用服务器(Lighthouse)是新一代面向中小企业和开发者的云服务器产品,具备轻运维、开箱即用的特点,适用于小型网站、博客、论坛、电商以及云端开发测试和学习环境等轻量级业务场景,相比传统云服务器更加简单易用,并通过一站式融合常用基础云服务帮助用户便捷高效的构建应用,是您使用腾讯云的最佳入门途径。 


入手后的第一个用途是用Squid搭建一个HTTP代理服务。

Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。

Squid非常流行,并且可以配置成:使用代理的时候,要输入用户名、密码才能连接。有的后起之秀代理服务器软件功能没有这么强大,不能支持账号访问模式,所以就不用去折腾了。
文章来源:https://www.codelast.com/
安装Squid

sudo apt install squid

 配置Squid:代理服务的端口

sudo vim /etc/squid/squid.conf

该配置文件的“http_port 3128”定义了默认的服务端口为3128,你可以改成你想要的端口。
文章来源:https://www.codelast.com/
 创建密码
为了通过用户名、密码来访问代理服务器,需要先安装软件包:

sudo apt install apache2-utils

这个软件包有创建密码所需的 htpasswd 软件。
然后就可以创建密码文件了:

sudo htpasswd -c -d /etc/squid/passwd <username>

这里表示的是:生成一个密码文件 /etc/squid/passwd,访问代理的用户名是 <username>,你自己看情况设置。
注意:
(1)为了避免麻烦,密码应设置成8位字符。据说不是8位的话会有warning,并且会有验证问题。
(2)你会发现,/etc/squid/passwd 这个密码文件里的密码内容,并不是你前面输入的密码!在客户端使用Squid代理的时候,使用的是你输入的密码,而不是 /etc/squid/passwd 文件里的密码!
文章来源:https://www.codelast.com/
 配置Squid:设置使用密码文件定义的账号

sudo vim /etc/squid/squid.conf

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS 这句话下添加:
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
acl auth_user proxy_auth REQUIRED
http_access allow auth_user
并确保后面的两句是没有被注释掉的:
http_access allow localhost
http_access deny all
第一句是允许在云服务器本地访问代理服务,第二句是禁止其他一切流量对该代理服务器的访问,也就是说:只有使用前面在密码文件中定义的账号,才能访问该代理服务器。

 启动代理服务
service squid start

 查看Squid日志
首先在Squid配置文件中打开日志记录,取消注释下面这行:
access_log daemon:/var/log/squid/access.log squid
再重启Squid服务(service squid restart),然后即可查看:
tail -f /var/log/squid/access.log
文章来源:https://www.codelast.com/
 命令行测试代理服务器是否work

curl -x "http://用户名:密码@IP:port" https://www.baidu.com
其中,IP 是Squid所在的服务器的IP,port 是前面设置的代理服务端口,用户名 是前面设置的代理账号的用户名,密码 则为代理账号的密码。
能打印出网页内容即说明代理可用。

 开放代理服务的端口给外网
这是最重要的一步!如果你没有意识到这个问题,那会浪费你非常多时间调试。
经过上面的配置,你只能在服务器上用命令行来访问代理服务,在外网仍然是不通的。此时,需要在腾讯云轻量应用服务器的“防火墙”设置页面,添加一条自定义的规则,开放你的代理端口:
tencent cloud firewall setting
文章来源:https://www.codelast.com/
 在其他机器上使用浏览器访问代理服务
假设你使用的是Chrome,那么访问代理可以用 SwitchyOmega 插件,新建一个情景模式,按下面的样子,把IP地址换成Squid服务所在的服务器IP,端口换成你设置的代理服务端口:
switchy omega setting
在使用这个情景模式的情况下,第一次用浏览器访问任何网页会弹出账号输入框,如果输对了就能通过代理来访问网络啦(可以看Squid的日志验证这一点)。
文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤ 
转载需注明出处:codelast.com 
感谢关注我的微信公众号(微信扫一扫):
wechat qrcode of codelast
以及我的微信视频号:

发表评论