apache调优 本文共有3817个字,关键词: apache优雅的重启:不中断用户连接重启服务器(等待已连接用户完成请求) ``` ~]# service httpd graceful #优雅的重启 ~]# serviice httpd graceful-stop #优雅的关闭服务 ``` apache是一个模块化的服务器,将服务、配置文件等实现了模块化 apache的主进程以root身份运行,PID是apache进程中最小的,主进程控制子进程,真正处理用户请求的是子进程 模块化的设计方便升级,动态加载,但是DSO(Dynamic Share Object)需要静态编译进程序 模块的动态加载通过DSO模块实现,需要新功能时,配置文件中调用即可。 ``` ~]# httpd -M #查看模块 ~]# httpd -l #查看serverMPM ~]# httpd -V #显示httpd的模式 ``` yum安装默认使用prefork模式 MPM是实现网络监听、请求处理,修改MPM需要重新编译 在不同的环境下使用不同的MPM实现最优化的底层处理和稳定性 prefork模式: apache在启动时预先fork一些子进程,然后请求进来以后,减少频繁创建和销毁进程的开销,每个子进程有一个线程,在一个时间点内只能处理一个请求。 优点:成熟稳定、兼容所有新老板块,同时不需要担心线程安全问题 缺点:一个进程占用较多的系统资源,消耗更多的内存,且不擅长处理高并发请求 ------------ worker模式 使用多进程多线程的混合模式,会预先开启几个子进程,然后每个子进程创建一些线程,同时包括一个监听线程。 每个请求过来会被分配到一个线程,线程比进程更轻量级,因为线程会共享主进程的内存空间,因此内存空间会占用少一些,在高并发的场景下表现比prefork模式更优秀。 优点:占用更少的内存,高并发场景下表现更优秀。 缺点:必须考虑线程的安全问题。 ------------ event模式: event模式和worker模式相似,最大的区别在于它解决了keep-alive场景下长期被占用的线程资源浪费问题,event模式中专门有一个线程来管理这些keep-alive类型的线程,在keep-alive场景下,为了解决用户短时间内再次向服务器发送TCP请求,会保持一个连接超时时间,但是这个等待实惠消耗服务器资源的,event模式解决了这个问题,eventMPM中专门有一个管理keep-alive线程的线程,它会监控服务器上是否还有可用的资源,如果没有可用的资源,会强制切断超时等待客户机的TCP连接,释放资源用于新的请求。 ------------ apache调优:我们调优的目的是为了降低服务器自身的资源消耗,给更多的用户提供服务。 ``` 1. 不记录指定文件类型的日志: 如动画、图片、js、css文件的访问日志不记录 在配置文件中结尾标记为image-request,定义日志时,CustomLog后追加 env=!image-request(取反) 2. apache配置静态缓存 静态缓存是指图片、js、css等文件,这些文件会被加载到用户的电脑上, 目的是为了下一次调用时不再去服务器上请求,加速了速度,提高了用户体验,但这些静态文件也应当有一定的时效性,因此得设置过期时间 使用mod_expires.c或者mod_headers模块实现缓存的调整 ~]# httpd -M #查看所需要的模块是否支持 ~]# curl -i http://* #请求页面时可以查看到expires功能,并查看缓存时间 统计用户访问的代码不应被缓存。 当请求的文件名不一样的时候会从服务器重新请求下载,保证用户看到的都是新的,解决缓存有效期过长的问题 缓存失效的条件: 一是用户主动清空缓存、 二是缓存过期 3. 配置防盗链 防止其他人将自己站点上的连接直接调用,消耗自身的带宽 `SetEnvlfNoCase Referer "^http://.*\.123\.com"local_ref` referer其实就是上一次访问的链接,配置referer是根据来源链接做限制,如果来源链接不是我们想要的,就直接拒绝。 图片、txt、MP3、rar等文件都支持 盗链造成的损失是很直接的 4. apache访问控制 对一些特定的目录限制访问 ``` Order deny,allow Deny from allow Allow from 127.0.0.1 ``` 也可针对请求的URL进行限制 ``` Order deny,allow Deny from allow Allow from 127.0.0.1 ``` 5. 禁止在某目录下执行PHP脚本,即禁止解析PHP 此举是避免上传的文件中有恶意代码片段 php_admin_flag engin off #禁止解析PHP的控制语句,但是用户还可以下载,这个也应当禁止 Order deny,allow Deny from allow 6. 禁止指定user_agent user_agent叫做浏览标识,每一种浏览器都有对应的user_agent 避免一些无用的搜索引擎或机器爬虫之类引起带宽的消耗,可以将指定的搜索引擎限制掉。 7. 控制apache返回给客户端的信息 ``` ~]# vim /etc/httpd/conf/httpd.conf ServerTokens ProductOnly(Prod) #仅返回给客户端服务名(apache) ·决定了返回给客户端的服务器响应字段是否包含服务器操作系统的描述和已启用的apache模块信息。 ServerSignature off #禁用页脚行 ·ServerSignature on #允许服务器在生成的文档中添加页脚行 ·ServerSignature EMail #创建一个"mailto:"引用;用于将文档发送到引用文档的ServerAdmin 也可以通过修改源代码重新编译,也可迷惑对方,改为IIS等 ``` 8. 隐藏php的版本信息 ~]# vim */php.ini #编辑php配置文件 expose_php=off 9. 配置日志轮询 安装cronlog工具 CustomLog "|/usr/local/sbin/cronlog /usr/local/apache2/logs/access_www_%Y%m%d.log" combined 10. 错误页面优雅的显示,错误不是报告给用户的 将404等错误信息重定向到网站首页或其他页面 11. 开启文件传输时压缩功能 采取先压缩再传输,传输结束后会在客户端解压缩(css、html、xml、js等文本文件) 视频和图片已经是经过压缩的,不建议再次压缩,很消耗资源 需要开启mod_deflate模块,也可动态进行模块编译,加入模块 12. 更改默认用户,源码安装默认用户为deamon,yum安装位apache,尽量改为别人不易猜到的用户 13. apache目录、文件的权限设置 对于目录:用户为root 权限为755 对于文件: 用户为root 权限为644 这样做的前提是在网站的架构中,应该把资源文件、包括用户上传的图片、附件等和程序分离,最好将用户上传的程序也分离,这样就可以从容放入授权,最好有单独的上传服务器。 14. 开启httpd-mpm.conf 增加连接数 15. 禁止目录index,防止将网站的结构暴露给用户 16. 禁止用户重载(覆盖) AllowDverride None #禁止用户覆盖 加快服务器的速度,因为它不再为每个请求寻找每个目录访问控制文件(.htacces) 17. 关闭CGI,配置文件中删除,别名的功能也可以删除 18. 避免使用.htaccess来对目录权限进行规则定义,这是不安全的。 19. 正确途径获取源代码,勤更新补丁 20. apache日志授权给root用户700权限 21. 尽可能的减少http请求的次数,将网页图片整合、css和html文件整合 ``` 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 调优文档 2018-07-03 1 条评论 6105 次浏览
http://fxme.top/index.php/page/2/