自己搭建HTTP代理服务器,最简单方案是Linux VPS安装现成代理软件。VPS服务商选择影响不大,操作系统优先Ubuntu或者Debian,社区资料充足,软件安装单条命令即可。服务器配置不用太高,1核1G足够运行代理,带宽和流量才是重点,代理转发消耗网络资源,CPU负载压力很小。
搭建Squid是最普遍方案。登录服务器,执行apt update,再apt install squid。安装完成Squid默认自动启动,监听3128端口。默认配置只允许本机访问,外部无法连接。配置文件路径/etc/squid/squid.conf,找到http_access deny all这一行,在上方添加允许规则。最简单方式放行自己固定公网IP,新增acl myip src 你的公网IP,再写http_access allow myip。家里宽带IP不固定,可以临时使用http_access allow all测试连通,调试完成收紧权限。修改配置执行squid -k reconfigure生效,或者systemctl restart squid重启服务。

放开访问权限还不够,公网扫描器很快就能探测开放代理。增加身份认证属于必要操作。Squid支持基础认证,创建密码文件htpasswd -c /etc/squid/passwd 用户名,输入两次密码。配置文件添加auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd,acl authenticated proxy_auth REQUIRED,最后http_access allow authenticated写在deny all前面。客户端连接会弹出账号密码输入框。HTTP代理本身不加密,密码明文传输,这套认证适合可信内网环境,或是外层嵌套SSH隧道使用。
觉得Squid功能繁杂,Tinyproxy更加轻量化。apt install tinyproxy,配置文件/etc/tinyproxy/tinyproxy.conf,默认端口8888。找到Allow 127.0.0.1,修改Allow 你的IP,或者注释掉这一行,但注释等于对外开放,风险很高。Tinyproxy支持基础认证,配置文件添加BasicAuth user password,保存重启服务。没有Squid缓存和复杂规则,只做简单流量转发,内存占用仅几MB。
3proxy是另一个可选方案,同时支持HTTP和SOCKS协议,配置文件相对复杂,功能更全面。源码编译或者包管理器安装,配置文件设置nserver、nscache、allow、proxy参数。优势是同一服务同时提供HTTP、SOCKS代理,一套程序满足两种需求。想要支持HTTPS网站CONNECT请求,Squid、Tinyproxy默认支持,3proxy需要额外配置。
搭建完成之后测试连通。本地终端执行curl -x http://用户名:密码@服务器IP:3128 https://www.google.com,可以返回HTML代表部署成功。浏览器代理设置填入服务器IP端口,填写账号密码。手机WiFi设置里手动配置代理,同样可以接入。
防火墙不要忽略。云服务商安全组放行代理端口,来源IP尽量限定个人常用IP段,不要开放0.0.0.0/0。服务器本机ufw或者iptables同步放行端口。如果只在内网使用,直接绑定内网IP,不暴露公网。
还有一个实际问题,HTTP代理传输数据明文,包含访问URL和表单提交内容。公网部署代理,传输链路节点都可以读取信息。自建HTTP代理尽量只访问公开无敏感信息站点,或者外层搭建SSH隧道。ssh -L 3128:localhost:3128 user@服务器IP创建本地端口转发,浏览器连接localhost:3128,流量全程加密,代理服务仅监听本地回环,外网扫描不到。不想使用SSH隧道,可以安装Stunnel或者选用原生HTTPS代理软件,配置步骤会多出一些。自建HTTP代理好处是控制权掌握在自己手里,但安全配置需要自行维护,不要搭建完成之后放任不管。