生产环境部署squid服务

网络拓扑

该实验使用虚拟机模拟搭建,准备开启2台虚拟机,客户端用本记代替。

1.Squid服务器使用2块网卡。如下图显示:

2.Web服务器与squid服务器配置在同一个网段即可。如下图显示:

3.客户端IP与squid服务器网卡1是在同一网段上即可。如下图显示:

4.查看squid服务器上的eth0和eth1网卡ip地址

5.查看web服务器的ip地址

6.先测试客户端能否ping通squid服务器的网卡1。

7.测试客户端能否ping通web服务器,ping不通正常。

8.安装squid软件,修改配置文件,启动服务。

我这里是通过rpm包进行安装的,默认配置文件在:/etc/squid/squid.conf

备注:squid.conf.default文件是squid.conf备份文件,我们可以把squid.conf文件直接删除,重新建一个squid.conf来进行配置。

9.进行配置Squid.cinf文件


http_port 3128


#(当squid服务器有两块网卡,一块用于和内网通信,另一块和外网通信的时候,在这种情况下,就需要使用IP地址和端口号写在一起的方式监听。http_port 10.98.10.10:3128)


visible_hostname  proxy.test.xom


主机名或IP


cache_mem 64MB


缓存占内存大小


cache_dir ufs /var/spool/squid 100 16 256


usf:缓存数据的存储格式

/var/spool/squid 缓存目录

100 : 缓存目录占磁盘空间大小(M)

16 :缓存空间一级子目录个数

256 :缓存空间二级子目录个数


emulate_httpd_log on


使Squid按照Web服务器的日志格式创建访问记录,Web访问记录分析程序


cache_log   /var/log/squid/cache.log


缓存日志通过cache_log字段设置


cache_access_log  /var/log/squid/access.log


日志记录客户端的请求访问Internet的详细信息


Cache_store_log /var/log/squid/error.log


日志记录客户端错误信息


logfile_rotate 9


表示Access.log和error.log日志9个轮循日志


cache_swap_low 60

cache_swap_high 65


当缓存空间使用达到65%时,新的内容将取代旧的,而不直接添加到目录中,直到空间又下降到60%才停止这一活动。


maximum_object_size 10240 KB


最大缓存块,我这里设置10MB,超过10MB不做缓存。


refresh_pattern –i ^http:// 0 90% 1440


设置缓存过期时间,以http开头,0表示最小缓存时间,1440最大缓存时间,单位是分钟。


acl deny_crm  urlpath_regex -i ^http:\\192.168.11.251


no_cache deny deny_crm


禁止缓存


maximum_object_size_in_memory 512 KB


超过这个大小将不缓存到内存中


cache_access_log none

禁止写日志,squid不会再生成access日志

client_netmask 255.255.255.255


告诉squid对每个请求的IP地址作为单独地址处理


acl max20_conn maxconn 20


客户端最大连接数20个(只能打开20个浏览窗口)

emulate_httpd_log on 验证web日志记录格式:

如果要限制的网站很多,可以使用文件的方式:

acl web dstdomain "/etc/squid/acl/rjhy"

http_access denyweb

然后把要控制的站点的IP地址和域名存放在相应的文件中,例如gedit编辑/etc/squid/acl/rjhy文件,把下面的一些站点添加进去:

由于我这里有个交易软件更新,客户端设置IE代理地址后,交易软件无法更新?

问题分析:

首先确认软件是通过哪个IP和端口连接,知道IP地址就可以把IP添加到squid配置文件。

查看方法:

首先打开交易软件,通过DOS命令查看地址和端口。

现在我们知道交易软件由内网192.168.29.111连接外网180.213.5.141建立的连接。

所以我们只要在squid配置文件中添加192.168.29.111这个IP即可。

备注:squid 3.1.10版本与早期的版本配置大有不同咯,如下图显示对比:

acl访问控制:

列表类型:

src IP         源IP地址(客户机的IP地址).

dst IP         目标地址(服务的器IP地址).

scrdomain       源名称  (客户机所属的域).

dstdomain       目标名称(服务器所属的域).

url_regex       URL规则的表达式

urlpath_regex:    URL-path  略去协议和主机名的URL规则表达式匹配.

proxy_auth      通过外部程序进行用户认证.

maxconn        单一IP最大连接数.

time          语法:[星期][时间段]

例子:

# 禁止地址或者网段(修改掩码可以设置网段,修改dst或src实现目的或源)

acl dropip src192.168.5.110/32

http_accessdeny dropip

# 禁止源地址/etc/squid/clist 列表

acl clist src"/etc/squid/clist"

http_accessdeny clist

# 禁止用户访问新浪域名

acl dropurldstdomain www.sina.com.cn

http_accessdeny dropurl

# 禁止访问域名包含sina.com的网站(-i 忽略大小写)

acl dropurl1url_regex -i .sina.com

http_accessdeny dropurl1

# 限制IP地址为192.168.5.200客户机并发最大连接数为5

acl clientip src192.168.5.200

acl conn5maxconn 5

http_access denyclientip1 conn5

# 禁止192.168.5.0这个网段在周一至周五的9:00至15:00上网

acl clientnetsrc 192.168.5.0/24

acl worktimetiem MTWHF 9:00-15:00

http_access denyclientnet worktime

# 禁止下载MP3 exerar为后辍名的文件

acl downloadurlpath_regex -i \.MP3$ \.exe$ \.rar$

http_access denydownload

10.检查语法,

11. 让配置文件生效

11.启动squid服务,启动squid服务会自动创建缓存文件,所以不需要初始化squid缓存文件。

13.查看squid服务缓存目录

14.使用tree命令统计目录

15.查看3128端口

16.配置squid加入系统开机自动启动

17.首先在squid服务器上测试能否访问web服务器的网页

18.客户端测试访问web服务器,客户端IE浏览器需要设置dailies服务器IP和端口。注意:先把iptables防火墙关闭,否者无法测试。

19.服务器日志文件越来越大怎么办?

两种方法:

1          禁止写日志

2          轮循切割日志

手动执行备份不人性化,应该配置任务计划执行备份。

说下crontab 任务计划命令语法格式:

例如: * * * * * /usr/sbin/squid -k rotate

第一列 分钟: 1——59

第二列 小时: 1——23(0表示子夜)

第三列 日 : 1——31

第四列 月 : 1——12或英文缩写Jan、Feb等

第五列 星期: 星期0——6(0表示星期天,1表示星期一、以此类推)

第六列  用户名(执行命令时以此用户的身份)和要执行的命令(路径)

其中的星号(*)是通配符,表示cron将忽略这个字段。
例如,如下任务接口配置每周六的早上4点轮询备份squid日志文件。注意:Crontabr任务计划配置没写绝对路劲,不执行。
[[email protected] ~]# squid –k rotate
首先要知道这个命令绝对路径
[[email protected] ~]# which squid
/usr/sbin/squid
查看绝对路径,知道绝对路径,就可以写任务计划
[[email protected] ~]# crontab –e
编辑任务计划,编辑内容如下
59 4 * * 6 /usr/sbin/squid -k rotate
已编辑好的任务计划内容
[[email protected] ~]# ls /var/spool/cron/
root
这个就是刚刚crontab –e编辑保存的路径。内容保存在root中。
[[email protected] ~]# cat /var/spool/cron/root
00 10 * * * /usr/sbin/squid -k rotate
验证查看。
[[email protected] ~]# service crond status
crond (pid  14261) 正在运行...
查看任务计划服务是否有启动



 

生产环境部署squid服务,布布扣,bubuko.com

时间: 2024-10-26 08:06:32

生产环境部署squid服务的相关文章

Django + Uwsgi + Nginx 的生产环境部署

使用runserver可以使我们的django项目很便捷的在本地运行起来,但这只能在局域网内访问,如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等,本篇文章总结归纳了一下基于uwsgi+Nginx下django项目生产环境的部署 准备条件: 1.确保有一个能够用runserver正常启动的django项目 2.项目已上传到linux 3.linux上已部署好python环境,且已安装好项目所需的模块 安装uwsgi uwsgi是python的一个模块,安装u

生产环境部署容器的五大挑战及应对之策

Docker容器使应用程序开发变得更容易,但在生产中部署容器可能会很难. 环境复杂性.生态系统易变性.跨不同分布式基础架构的部署...... 本文将为你解析生产环境部署容器的五大挑战及应对之策. 软件开发人员通常只关注在特定基础架构上运行的单个应用程序.应用程序堆栈或工作负载.然而,在生产环境中,一组不同的应用程序常需在各种技术(例如Java,LAMP等)上运行,而这些技术又需在本地.云上或二者结合的异构基础设施上部署.这给生产环境中容器化应用程序的运行带来了一些挑战: 控制高度密集.快速变化的

Vue生产环境部署

前面的话 开发时,Vue 会提供很多警告来帮助解决常见的错误与陷阱.生产时,这些警告语句却没有用,反而会增加载荷量.再次,有些警告检查有小的运行时开销,生产环境模式下是可以避免的.本文将详细介绍Vue生产环境部署 生产环境 如果用 Vue 完整独立版本 (直接用 <script> 元素引入 Vue),生产时应该用精简版本 (vue.min.js) 如果用 Webpack 或 Browserify 类似的打包工具时,生产状态会在 Vue 源码中由 process.env.NODE_ENV 决定,

HyperLedger Fabric 1.2 kafka生产环境部署(11.1)

11.1 Kafka模式简介       上一章介绍的Solo模式只存在一个排序(orderer)服务,是一种中心化结构,一旦排序(orderer)服务出现了问题,整个区块链网络将会崩溃,为了能在正式环境中稳定运行,需要对排序(orderer)服务采用集群方式,Hyperledger Fabric采用kafka方式实现排序(orderer)服务的集群,kafka模块被认为是半中心化结构.       顺便提一下,去中心化的BFT(拜占庭容错)排序(orderer)服务集群方式目前还在开发,还没有

【原创】大数据基础之Airflow(2)生产环境部署airflow研究

一 官方 airflow官方分布式部署结构图 airflow进程 webserver scheduler flower(非必须) worker airflow缺点 scheduler单点 通过在scheduler的dags目录变动dag文件来提交流程 官方分布式部署方案 多个webserver 多个worker CeleryExecutor(依赖redis或rabbitmq) MesosExecutor(依赖mesos) 第三方开源方案ASFC 针对scheduler单点问题,有第三方方案:ht

奉上SCCM生产环境部署Error Logs

奉上SCCM生产环境部署Error Logs SCCM生产环境部署报错日志,供大家查看,如有此类问题,可共同探讨,附件为日志查看器及相关日志.

生产环境部署单台redis

生产环境部署redis方案1.腾讯云有redis主从2.自己部署redis也很简单 (1)redis使用编译安装方式,所以需要安装编译基本组件# yum install gcc cpp glibc glibc-devel gcc-c++ (2)redis依赖jemalloc,所以先安装此组件# wget http://www.canonware.com/download/jemalloc/jemalloc-4.2.1.tar.bz2后续读者可以查看此链接获取更新版本jemalloc,http:/

Django + Uwsgi + Nginx 实现生产环境部署

一.如何在生产上部署Django? Django的部署可以有很多方式,采用nginx+uwsgi的方式是其中比较常见的一种方式. 二.uwsgi介绍 uWSGI是一个Web服务器,它实现了WSGI协议.uwsgi.http等协议.Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换. 要注意 WSGI / uwsgi / uWSGI 这三个概念的区分. WSGI是一种Web服务器网关接口.它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask

生产环境监控mysql服务状态

在生产环境中,如果某个重要的服务关闭了,可能会产生不可预料的结果,这时候,我们要作一个脚本,这个脚本可以监控服务状态,在服务关闭的时候,可以自动打开服务,确保用户的利益. 下面我自己写了一个监控Mysql服务的脚本,目前还没有发现bug,如果有大神发现bug的话可以和我说一下哈,本人QQ:1090139534,我也是刚刚学习的,大家可以加我和我交流. #3306是mysqld服务的端口,看看是否是LISTEN状态. stat="`netstat -lnt|grep 3306 |grep  LIS