赞
踩
1.使用创建的用户登录
2.登录后切换到root账户:
sudo su
输入当前用户密码
systemctl stop firewalld
systemctl disable firewalld
Setenforce 0
查看当前有无依赖
gcc --version
make -version
有就不用安装
#yum -y install gcc gcc-c++ make
apt-get -y install make
上传软件包squid-3.5.28.tar到/opt目录下
1.解压缩
cd /opt
tar zxvf squid-3.5.28.tar.gz
2.编译
cd squid-3.5.28/
./configure --prefix=/usr/local/squid \
--sysconfdir=/etc \
--enable-arp-acl \
--enable-linux-netfilter \
--enable-linux-tproxy \
--enable-async-io=100 \
--enable-err-language="Simplify_Chinese" \
--enable-underscore \
--enable-poll \
--enable-gnuregex \
--disable-internal-dns
3.make编译安装
make -j2 && make install
命令 | 作用 |
---|---|
./configure-prefix=/usr/local/squid | 安装目录 |
–sysconfdir=/etc/ | 单独将配置文件修改到/etc目录下 |
–enable-arp-acl | 可在ACL中设置通过MAC地址进行管理,防止IP欺骗 |
–enable-linux-netfilter | 使用内核过滤 |
–enable-linux-tproxy | 支持透明模式 |
–enable-async-io=100 | 异步I/O,提升储存性能,值可修改 |
–enable-err-language=“Simplify Chinese” | 错误信息的显示语言 |
–enable-underscore | 允许URL中有下划线 |
–enable-poll | 使用Poll()模式,提升性能 |
–enable-gnuregex | 使用GNU正则表达式 |
make -j2 && make install | 使用2核进行编译 |
命令 | 作用 |
---|---|
ln -s /usr/local/squid/sbin/* /usr/local/sbin | 创建链接文件,优化路径 |
useradd -M -s /sbin/nologin squid | 创建程序用户、组 |
chown -R squid:squid /usr/local/squid/var/ | 改变目录属主 |
ln -s /usr/local/squid/sbin/* /usr/local/sbin
useradd -M -s /sbin/nologin squid
chown -R squid:squid /usr/local/squid/var/
命令 | 作用 |
---|---|
http_access allow all | 放在http_access deny all之前,允许任意客户机使用代理服务,控制规则自,上而下匹配 |
http_port 3128 | 用来指定代理服务监听的地址和端口(默认的端口号为3128) |
cache_effective_user squid | 添加,指定程序用户,用来设置初始化、运行时缓存的账号,否则启动不成功 |
cache_effective_group squid | 添加,指定账号基本组 |
coredump_dir /usr/local/squid/var/cache/squid | 指定缓存文件目录 |
vim /etc/squid.conf
-56行--插入
http_access allow all
http_access deny all
http_port 3128
cache_effective_user squid
cache_effective_group squid
68行
coredump_dir /usr/local/squid/var/cache/squid
命令 | 作用 |
---|---|
squid -k parse | 检查配置文件 |
squid -k rec | 重新加载配置文件 |
squid -z | 初始化缓存目录 |
squid | 启动squid服务 |
netstat -anpt | grep squid ##确认squid服务处于正常监听状态
squid -k parse
squid -k rec
squid -z
squid
netstat -anpt | grep squid
vim /etc/init.d/squid #!/bin/bash #chkconfig: 35 90 25 #config:/etc/squid.conf #pidfile:/usr/local/squid/var/run/squid.pid # Description: Squid - Internet Object Cache PID="/usr/local/squid/var/run/squid.pid" CONF="/etc/squid.conf" CMD="/usr/local/squid/sbin/squid" case "$1" in start) netstat -natp | grep squid &> /dev/null if [ $? -eq 0 ] then echo "squid is running" else echo "正在启动 squid..." $CMD fi ;; stop) $CMD -k kill &> /dev/null rm -rf $PID &> /dev/null ;; status) [ -f $PID ] &> /dev/null if [ $? -eq 0 ] then netstat -natp | grep squid else echo "squid is not running" fi ;; restart) $0 stop &>/dev/null echo "正在关闭Squid.. . " $0 start &>/dev/null echo "正在启动Squid..." ;; reload) $CMD -k reconfigure ;; check) $CMD -k parse ;; *) echo "用法:{start|stop|restart|reload|check|status}" esac
chmod +x /etc/init.d/squid
chkconfig --add squid
chkconfig squid on
service squid restart ##测试正常
注意:(一台squid代理多个后端web,并使用不同域名访问不同的IP)
systemctl stop firewalld
systemctl stop httpd
iptables -F
iptables -t nat -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
vim /etc/squid.conf 56行--修改,插入------- no_cache deny all http_access allow all http_access deny all 61行--修改,插入------- # Squid normally listens to port 3128 #http_port 3128 http_port 80 accel vhost vport http_port squidip:80 accel vhost vport cache_peer 后端webIP parent 后端web端口 0 no-query originserver round-robin name=web1 cache_peer 后端webIP parent 后端web端口 0 no-query originserver round-robin name=web2 cache_peer_domain web1 www.ceshiweb.com cache_peer_domain web2 www.sunkai.com cache_effective_user squid cache_effective_group squid cache_mem 64 MB reply_body_max_size 10 MB maximum_object_size 4096 KB
注意:一台squid配置多台web转发的配置如上
反向代理加速模式,这个时候squid在80端口监听请求,同时和web server的请求端口(vhostvport)绑定,这个时候请求到了squid, squid是不用转发请求的,而是直接要么从缓存中拿数据要么向绑定的端口直接请求数据。
代码 | 说明 |
---|---|
accel | 反向代理加速模式 |
vhost | 支持域名或主机名来表示代理节点 |
vport | 支持IP和端口来表示代理节点 |
parent | 代表为父节点,上下关系,非平级关系 |
80 | 代理内部web服务器的80端口 |
0 | 没有使用icp,表示就一台squid服务器 |
no-query | 不做查询操作,直接获取数据 |
oriqinserver | 指定是源服务器 |
round-robin | 指定squid通过轮询方式将请求分发到其中一台父节点 |
name | 设置别名 |
http_port 80 accel vhost vport | squid从一个缓存变成了一个Web服务器 |
squid -z
systemctl stop httpd
service squid restart
设置–》系统–》打开代理设置–》设置代理
注意:(1)先清除客户端的浏览器缓存
(2)手动设置代理–开启使用代理服务器–设置代理地址和端口–保存
(3)再次访问web服务器,查看日志文件的变化;这时显示的来访IP变成了squid代理服务器地址
代理ip为squid服务器ip。 端口号是squid.conf文件定义的80端口
进入C:\Windows\System32\drivers\etc\hosts
在最后一行添加squid 的ip和域名
squidip www.ceshiweb.com
squidip www.sunkai.com
注意要给予hosts文件完全权限
tail -f /usr/local/squid/var/logs/access.log
tail -f /var/log/httpd/access_log
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。