squid加速WEB支持虚拟主机配置心得体会

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:  本人的一个朋友是做网站的,一起托管了一台WEB服务器,日流量上万,上面开设了很多个虚拟主机,呵呵还有我的ynho.com,近日装上Squid 进行WEB加速,Squid 和Apache均在同一台服务器上面,效果非常明显,确实,弄这个东西花费了我不少时间,几个通宵的研究,同时也很感谢在CU上面的朋友热心帮助,下面是我的一些心得。
 本人的一个朋友是做网站的,一起托管了一台WEB服务器,日流量上万,上面开设了很多个虚拟主机,呵呵还有我的ynho.com,近日装上Squid 进行WEB加速,Squid 和Apache均在同一台服务器上面,效果非常明显,确实,弄这个东西花费了我不少时间,几个通宵的研究,同时也很 感谢在CU上面的朋友热心帮助,下面是我的一些心得。
我们的服务器基本配置是:
INTEL 双核 2.8g , 2G内存,160G SATA硬盘  100M宽带  操作系统:freebsd
http://www.squid-cache.org下载最新的SQUID 软件
安装: ./configure --with-maxfd=65536
这个--with-maxfd参数是增大squid文件描述符到65536
安装完毕后开始配置/usr/local/squid/etc/squid.conf
visible_hostname www.ynho.com
http_port xx.xx.xx.xx:80 vhost vport
#xx.xx.xx.xx为这台服务器的IP地址
icp_port 0
cache_mem 400 MB
#设置Squid所能使用的内存共400MB,这个值因人而异
cache_swap_low 90
cache_swap_high 95
maximum_object_size 20000 KB
#最大缓存文件大小,超过这个值则不缓存,这个值因人而异
maximum_object_size_in_memory 4096 KB
#装入内存缓存的文件大小,这个值对Squid的性能影响比较大,因为默认值是8K,超过8K的文件都不装入内存,而实际应用中很多网页和图片等都超过8KB, 个人认为如果缓存不装入内存而存在磁盘上,性能和apache直接读取磁盘文件没什么区别,甚至不如直接访问apache,现在设置成小于4兆的文件通通装入内存缓存.
cache_dir ufs /tmp1 10000 16 256
#磁盘缓存的类型和目录,大小,一二级目录的设置,这里磁盘缓存大小是10G
cache_store_log none
#这个设置是不记录store.log
emulate_httpd_log on
#打开emulate_httpd_log选项,将使Squid仿照Aapche的 日志格式
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
#日志格式combined的设置
pid_filename /var/log/squid/squid.pid
cache_log /var/log/squid/cache.log
access_log /var/log/squid/access.log combined
#这里是设置pid和日志文件的位置,因人而异,同时日志格式是combined,awstats可以直接调用分析了
acl all src 0.0.0.0/0.0.0.0
acl QUERY urlpath_regex cgi-bin .php .cgi .avi .wmv .rm .ram .mpg .mpeg .zip .exe
cache deny QUERY
#设置不想缓存的目录或者文件类型
acl picurl url_regex -i /.bmp$ /.png$ /.jpg$ /.gif$ /.jpeg$
acl mystie1 referer_regex -i 1.ynho.com
http_access allow mystie1 picurl
acl mystie2 referer_regex -i 2.ynho.com
http_access allow mystie2 picurl
#设置防图片盗链的,其中1.ynho.com,和2.ynho.com分别是虚拟主机的域名,referer中必须包含有aaa或者bbb的域名才能访问图片
acl nullref referer_regex -i ^$
http_access allow nullref
acl hasref referer_regex -i .+
http_access deny hasref picurl
#设置允许直接访问图片和拒绝referer中没有包含aaa或着bbb的访问图片
cache_peer xx.xx.xx.xx parent 81 0 no-query originserver login=PASS
#xx.xx.xx.xx还是本机服务器的IP,81则是apache的端口,如果你的虚拟主机有用户名和密码保护起来的目录必须设置login=PASS,否则认证会失效
cache_effective_user nobody
cache_effective_group nobody
#squid使用的用户组和用户名
squid配置完成!
建立缓存和日志目录,并改变权限使squid能写入
mkdir /tmp1
mkdir /var/log/squid
chown -R nobody:nobody /tmp1
chmod 666 /tmp1
chown -R nobody:nobody /var/log/squid
-----------------------
Apache需要改动的配置
Port 81

#要把端口改为81

NameVirtualHost xx.xx.xx.xx:81
#本台主机IP和端口

虚拟主机配置
<VirtualHost xx.xx.xx.xx>
    ServerAdmin xxx@yahoo.com
    DocumentRoot /home/aaa/www
    ServerName aaa.com
    ServerAlias www.aaa.com
    ScriptAlias /cgi-bin/ "/home/aaa/cgi-bin/"
    <Directory />
      Options Includes FollowSymLinks
      AllowOverride All
    </Directory>
</VirtualHost>

如果还有别的虚拟主机请参照上面设置重启apache : apachectl restart

----------------------------------------------------------
首次运行squid要先建立缓存

/usr/local/squid/sbin/squid -z

启动squid

echo "65535" > /proc/sys/fs/file-max
ulimit -HSn 65535
/usr/local/squid/sbin/squid

大家最好把这几句话放到squid启动脚本里面,这样才会获得65536文件描述符

最好还编辑/etc/hosts 文件
添加以下内容
xx.xx.xx.xx ynho.com www.ynho.com
这样免去查询DNS,速度也快一些
现在netstat 看一下端口启动没有
相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
2月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
250 4
|
5月前
|
存储 Linux Apache
在CentOS上配置SVN至Web目录的自动同步
通过上述配置,每次当SVN仓库中提交新的更改时,`post-commit`钩子将被触发,SVN仓库的内容会自动同步到指定的Web目录,从而实现代码的连续部署。
189 16
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
210 4
|
JavaScript 前端开发 开发工具
web项目规范配置(husky、eslint、lint-staged、commit)
通过上述配置,可以确保在Web项目开发过程中自动进行代码质量检查和规范化提交。Husky、ESLint、lint-staged和Commitlint共同作用,使得每次提交代码之前都会自动检查代码风格和语法问题,防止不符合规范的代码进入代码库。这不仅提高了代码质量,还保证了团队协作中的一致性。希望这些配置指南能帮助你建立高效的开发流程。
666 5
|
小程序 前端开发 中间件
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
本文介绍了如何在ThinkPHP框架中配置跨域请求,使用了TP内置的跨域类`\think\middleware\AllowCrossDomain::class`。文章还讨论了小程序和web网页在跨域请求格式上的区别,并提供了解决方案,包括修改跨域中间件源码以支持`Origin`和`token`。此外,还介绍了微信小程序跨域请求的示例和web网页前端发送Axios跨域请求的请求拦截器配置。
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
|
监控 Apache
HAProxy的高级配置选项-Web服务器状态监测
这篇文章介绍了HAProxy的高级配置选项,特别是如何进行Web服务器状态监测,包括基于四层传输端口监测、基于指定URI监测和基于指定URI的request请求头部内容监测三种方式,并通过实战案例展示了配置过程和效果。
370 8
HAProxy的高级配置选项-Web服务器状态监测
|
前端开发 程序员 API
从后端到前端的无缝切换:一名C#程序员如何借助Blazor技术实现全栈开发的梦想——深入解析Blazor框架下的Web应用构建之旅,附带实战代码示例与项目配置技巧揭露
【8月更文挑战第31天】本文通过详细步骤和代码示例,介绍了如何利用 Blazor 构建全栈 Web 应用。从创建新的 Blazor WebAssembly 项目开始,逐步演示了前后端分离的服务架构设计,包括 REST API 的设置及 Blazor 组件的数据展示。通过整合前后端逻辑,C# 开发者能够在统一环境中实现高效且一致的全栈开发。Blazor 的引入不仅简化了 Web 应用开发流程,还为习惯于后端开发的程序员提供了进入前端世界的桥梁。
1940 1
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
1206 0
|
NoSQL Java 数据库连接
springBoot:整合其他框架&condition&切换web配置 (五)
本文档介绍了如何在Spring Boot项目中整合JUnit、Redis和MyBatis等框架,并提供了相应的依赖配置示例。同时,还展示了如何通过条件注解实现Bean的条件创建,以及如何切换Web服务器配置,从默认的Tomcat切换到Jetty。
159 0
|
前端开发 开发者 Apache
揭秘Apache Wicket项目结构:如何打造Web应用的钢铁长城,告别混乱代码!
【8月更文挑战第31天】Apache Wicket凭借其组件化设计深受Java Web开发者青睐。本文详细解析了Wicket项目结构,帮助你构建可维护的大型Web应用。通过示例展示了如何使用Maven管理依赖,并组织页面、组件及业务逻辑,确保代码清晰易懂。Wicket提供的页面继承、组件重用等功能进一步增强了项目的可维护性和扩展性。掌握这些技巧,能够显著提升开发效率,构建更稳定的Web应用。
291 0