当前位置:首页 > 学习 > 正文内容

CentOS下使用Docker搭建Squid Proxy代理服务器

hunterzuo2年前 (2023-06-12)学习350

how-to-install-squid-proxy-on-ubuntu.png

作为一个老资格的网虫,有的时候需要使用socks5或者http代理服务器。socks5代理服务器我一般使用dante,网上有不少安装方法,还有一键安装脚本,但是http代理服务器比较少涉及,之前折腾过tinyproxy也搭建成功了,但是squid一直没有试过。对大名鼎鼎的squid敬仰已久,docker广泛应用之后,使原先似乎有点难度的squid也变得简单,今天就来试一试用docker搭建squid。网上搜索了一下,发现里面或多或少还是有些小“坑”的,因此自己动手一遍,把全程记录下来。

安装Docker

# 下载安装脚本
$ curl -fsSL get.docker.com -o get-docker.sh

# 安装 docker
$ sudo sh get-docker.sh

# 启动 docker
$ sudo service docker start

安装Squid容器

# 从docker hub下载容器
$ docker pull sameersbn/squid

# 在docker中创建容器
$ docker run --name squid -d --restart=always --publish 3128:3128 --volume /srv/docker/squid/cache:/var/spool/squid sameersbn/squid

端口和目录可以进行修改,这里要注意有一个小坑,网上有的教程容器内squid的目录写成了squid3,而实际上容器内目录是squid,运行之后squid会闪退。我搭建的时候也出现了这个情况,进入容器内查了access.log和cache.log之后才找到这个问题的。其实还有一个比较常见的问题,“ipcCreate: fork: (12) Cannot allocate memory”以及“FATAL: Couldn't start logfile helper”,这主要是vps服务器没有设置swap所导致的,如下图所示

Snipaste_2024-05-02_18-18-17.png

解决问题也很简单,如下操作

#  给vps添加swap
curl -O https://raw.githubusercontent.com/stilleshan/code/main/shell/swap.sh && chmod +x swap.sh && ./swap.sh

之后按照脚本提示的操作就行了,以M为单位,一般是内存的2倍左右

配置用户名和密码认证

# 首先安装httpd
$ sudo yum -y install httpd

# 生成认证文件
$ sudo htpasswd -c squid_passwd username
## squid_passwd是认证文件的名字,不能改;后面的username改成proxy的登陆用户名,接下来在这里输入两次密码

# 将认证文件拷贝至容器
$ sudo docker cp squid_passwd squid:/etc/squid/
##  注意这里容器的目录是squid而不是squid3

Squid配置文件

acl localnet src 10.0.0.0/8    
acl localnet src 172.16.0.0/12    
acl localnet src 192.168.0.0/16   
acl localnet src fc00::/7       
acl localnet src fe80::/10      
acl localnet src 0.0.0.0/0.0.0.0
acl localnet src 0.0.0.0/8

acl SSL_ports port 443
acl Safe_ports port 80        # http
acl Safe_ports port 21        # ftp
acl Safe_ports port 443        # https
acl Safe_ports port 70        # gopher
acl Safe_ports port 210        # wais
acl Safe_ports port 1025-65535    # unregistered ports
acl Safe_ports port 280        # http-mgmt
acl Safe_ports port 488        # gss-http
acl Safe_ports port 591        # filemaker
acl Safe_ports port 777        # multiling http
acl CONNECT method CONNECT

# username&password auth config
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/squid_passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access deny to_localhost
http_access allow localnet
http_access allow localhost
http_access deny all
http_port 3128

cache_dir ufs /var/spool/squid 100 16 256
coredump_dir /var/spool/squid
refresh_pattern ^ftp:        1440    20%    10080
refresh_pattern ^gopher:    1440    0%    1440
refresh_pattern -i (/cgi-bin/|\?) 0    0%    0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern .        0    20%    4320

这个配置文件是网上找的,测试了确实可用,直接贴在这里了。

将配置文件导入容器

$ sudo docker cp squid.conf squid:/etc/squid/squid.conf
# 这里是squid目录,而不是squid3目录

##  这里还有一个小坑,容器内的/etc/squid/目录下如果有squid.conf,一定要先删掉,否则没有实际替换掉之前老的squid.conf文件
##  附进入容器的方法
$  sudo docker ps
#  列出docker容器列表,找到容器名或者容器id

$  sudo docker exec -it id号 bash
#  这样就可以在容器内进行各种操作了

启动容器

# 启动容器
$ sudo docker start squid

# 重启容器
$ sudo docker restart squid

使用代理

# 编辑环境变量
$  sudo vi /etc/profile

#  在profile文件的最后加上以下代码
   http_proxy=http://username:password@yourproxy:3128/
   https_proxy_proxy=http://username:password@yourproxy:3128/
   export http_proxy
   export https_proxy
   
#  最后让环境变量生效
$  sudo source /etc/profile


扫描二维码推送至手机访问。

版权声明:本文由人生如诗发布,如需转载请注明出处。

本文链接:https://blog.nifeng.win/?id=6

分享给朋友:
返回列表

没有更早的文章了...

下一篇:CentOS下使用dante搭建socks5代理服务器

“CentOS下使用Docker搭建Squid Proxy代理服务器” 的相关文章

CentOS下搭建Cloudreve对接Aria2实现网盘和在线下载功能

CentOS下搭建Cloudreve对接Aria2实现网盘和在线下载功能

一直想要一个在线的大容量网盘,把本机上一些文档、视频以及网上搜集的一些资源放到网盘上,一来节约本地硬盘资源,二来可以实现网络共享,随时随地可以查看,第三也相当于把这些资源在网络上做个备份。要实现这些功能有很多方案,我网上搜索查询了以后,最后选择了Cloudreve和Aria2这个组合,搭建Cloud...

CentOS环境下搭建WordPress博客程序

CentOS环境下搭建WordPress博客程序

WordPress是目前最流行、用户最多、使用最广泛的博客程序,它的功能丰富完善,上下游的生态完备,插件拓展众多,各类教程很多,对于新手来说是一款适合的个人博客程序。但是功能众多的同时,WordPress也显得很庞大臃肿,加载起来比较慢,远不如Z-blog,typecho之类的程序。个人角度来看,我...

CentOS下搭建WebSSH并配置密码访问

CentOS下搭建WebSSH并配置密码访问

自己平时比较喜欢折腾,手上有一些linux系统的vps,有的时候不在家里或者办公室没有SSH客户端,管理这些vps比较麻烦。这几天在网上逛,发现可以通过搭建网页版的SSH客户端,这下就方便了。只要把webssh放在一台网络比较友好的vps上,那么几乎可以实现随时随地方便地连接和管理我的vps了。今天...

CentOS下搭建TinyProxy代理服务器

CentOS下搭建TinyProxy代理服务器

  TinyProxy是一个linux下的轻量级代理服务器软件,功能比较全面,软件的安装和配置相对于squid proxy来说比较简单,适用于搭建简易的要求不高的http(s)代理服务器,个人使用是完全足够了。我的应用场景是用美国服务器搭建了一个cloudreve个人网盘,用Raidriv...