阿里云linux环境安装squid做正向代理服务
目前部署的某应用采用N台ECS+1个slb的方式负载均衡部署,ecs均未开通外网带宽。现在由于业务需要增加电子支付及微信公众服务功能,而这些功能需要调用互联网的api(基本都是ssl的),而ecs本身无外网带宽,无法访问外部地址。目前实现的思路是在开通一台ecs服务器的外网,在其上面安装代理服务软件,其它服务器通过这台代理进行互联网访问,由于web服务器采用nginx,所以想当然的就在nginx上面配置了正向代理,测试通过,可是程序跑的时候还是无法连接,经过检查才发现微信使用的https连接,而nginx不支持https的正向代理(因为其没有connect功能)。只好转战squid
常规的安装方式就是yum了
yum install squid -y
很快就会安装完成。
或者我们使用源代码安装:
cd /usr/local/src
wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.2.tar.gz
tar -zxvf squid-3.5.2.tar.gz
cd squid-3.5.2
./configure --prefix=/usr/local/squid --enable-snmp --enable-storeio=diskd,ufs --enable-poll --disable-hostname-checks --enable-underscores --enable-x-accelerator-vary --enable-kill-parent-hack --enable-err-language="Simplify_Chinese" --enable-default-err-languages="Simplify_Chinese" --disable-ident-lookups --with-maxfd=65535
make
make install
安装完成后就是配置工作了!
编辑/etc/squid/squid.conf为如下内容:
#################################
### acl和http_pass访问控制 ###
#################################
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl all src 0.0.0.0/0.0.0.0
# 以下定义了局域网地址localnet
acl localnet src 10.0.0.0/8
# 定义SSL_ports为443
acl SSL_ports port 443
# 定义了Safe_ports所代表的端口
acl Safe_ports port 80 # http
acl Safe_ports port 443 # https
# 定义CONNECT代表http里的CONNECT请求方法
acl CONNECT method CONNECT
# 允许本机管理缓存
http_access allow manager localhost
# 拒绝其他地址管理缓存
http_access deny manager
# 拒绝不安全端口请求
http_access deny !Safe_ports
# 不允许连接非安全SSL_ports端口
http_access deny CONNECT !SSL_ports
# 拒绝连接到本地服务器提供的服务
# (用于保护本机一些只有本机用户才能访问的服务)
# http_access deny to_localhost
# 允许局域网用户的请求
http_access allow localnet
# 允许本机用户的请求
http_access allow localhost
# 拒绝其他所有请求
http_access deny all
#################################
### squid 服务器基本配置 ###
#################################
# Squid的监听端口
http_port 3128
#################################
### squid 缓存配置 ###
#################################
# 出现cgi-bin或者?的URL不予缓存
hierarchy_stoplist cgi-bin ?
# 磁盘缓存目录
#cache_dir ufs /webservers/squid 100 16 256
# squid挂掉后,临终遗言要放到哪里
coredump_dir /webservers/squid
# 刷新缓存规则
refresh_pattern -i (/cgi-bin/|?) 0 0% 0
refresh_pattern . 0 20% 4320
visible_hostname iZ28z295fu9Z
############################
service squid start
如果启动出错,去查看:
/var/log/squid/squid.out
使用netstat -na |grep 3128检查端口使用已经监听。
之后就是进行代理的测试了!
在需要访问外网的机器上执行以下操作之一即可:
export http_proxy=http://yourproxyaddress:3128
export https_proxy=http://yourproxyaddress:3128
2. gedit ~/.bashrc
export http_proxy=http://yourproxyaddress:3128
export https_proxy=http://yourproxyaddress:3128
yourproxyaddress也就是你的squid服务器的ip了,可以根据自己的需要修改。
- 老ecs阿里云盘在线扩容操作记录(2024-03-13)
- linux安装pcre库(8.44)(2021-01-27)
- linux下编译memcached(1.4.24)报错的解决(2016-04-28)
- 阿里云等linux云主机设置swap空间的方法(2016-01-31)
- 在阿里云linux 15.1 64位系统编译安装mysql 5.7.10(2016-01-30)
- 64位linux下载与安装cmake(2016-01-30)
- 卸载aliyun linux 15预装的java运行环境openjdk 1.6(2016-01-30)
- 从头开始配置一台tomcat+nginx环境的阿里云ecs(2016-01-12)
- linux下安装memcached(1.4.24)服务(2015-09-09)
- aliyun linux配置vsftpd及配置iptables允许连接(2015-03-11)