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

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

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

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下使用dante搭建socks5代理服务器

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

Socks5是一个常见的代理服务器,尤其是在管理远程SSH主机时,由于中国国际网络出口比较不稳定,各种抽风、掉包和高延时,导致SSH经常断线,即使使用screen掉线多了也非常不方便,因此有必要找一台线路很稳定的服务器比如电信的CN2GIA线路的服务器,搭建一个socks5服务器来连接和管理远程服务...

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

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

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

CentOS在Lnmp环境下搭建Directory Lister目录列表程序

CentOS在Lnmp环境下搭建Directory Lister目录列表程序

在搭建网站中,我喜欢把一些自己常用的脚本和文件放到一个自己构建的网站上,折腾其他vps的时候,不必再从google上去搜索下载,否则十分麻烦。由于基本都是在linux系统的环境使用和下载这些软件和脚本,因此如果能够实现直链,而且是跟绝对路径一致的话,便于记忆下载更方便。其实网上的目录列表程序比较多,...

CentOS环境下搭建WordPress博客程序

CentOS环境下搭建WordPress博客程序

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

CentOS下搭建Zdir目录列表程序

CentOS下搭建Zdir目录列表程序

Zdir是一款相对比较流行的目录列表程序,与Directory Lister不同的是Zdir可以用户登录以后实现文件上传,可以实现文件分享、二维码等功能。相比起其他的目录列表程序,Zdir也是比较轻量、简洁的,受到了很多人的欢迎。它并没有像Directory Lister那样最朴素的直链功能,但仍然...

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

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

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