设为首页 收藏本站
查看: 768|回复: 0

[经验分享] linux 网站架设调优Apache(一)

[复制链接]

尚未签到

发表于 2018-11-20 08:17:27 | 显示全部楼层 |阅读模式
  环境:
  view sourceprint?
  1.CentOS6.4 x86_64位 采用最小化安装,系统经过了基本优化篇
  2.apache版本:httpd-2.4.6
  3.apr版本:apr-1.4.8
  4.apr-util版本:apr-util-1.5.2
  5.pcre版本:pcre-7.8
  6.源码包存放位置:/server/tools
  7.源码包编译安装位置:/etc/local/软件名称
  一、源码官方下,补丁及时打
  正如我们在apache部署篇讲到的我们需要对下载的源码包进行验证一样,我们在挑选apache源码安装包的时候,一定要去官网,不要去乱七八糟的站点进行下载,防止源码包被别有用心的人动过手脚,导致后面对公司业务造成不必要损失。
  另外为了apache的安全性和性能考虑,我们一定要多多关注apache的官网的补丁发布情况,一旦有新的补丁,我们一定要及早打上。特别是一些安全补丁,防止受到损失。
  二、屏蔽apache版本等敏感信息
  1)我们在apache主配置文件httpd.conf中,找到包含httpd-default.conf的行,并解开注释
  view sourceprint?
  1.[root@c64-web /]# grep "httpd-default.conf" /usr/local/apache/conf/httpd.conf
  2.#Include conf/extra/httpd-default.conf
  3.[root@c64-web /]# sed -i 's#\#Include conf/extra/httpd-default.conf#Include conf/extra/httpd-default.conf#g' /usr/local/apache/conf/httpd.conf
  注意:编译安装的情况下,只有此行解开注释了,后面的修改才能生效。
  2)打开httpd-default.conf文件,修改如下两个地方
  view sourceprint?
  1.[root@sunsky /]# grep Server conf/extra/httpd-default.conf|grep -v "#"
  2.ServerTokens full
  3.ServerSignature Off
  修改为
  view sourceprint?
  1.ServerTokens Prod
  2.ServerSignature Off
  经过上面的修改,当你在curl-Iwww.sunsky.pw的时候,还是会出现下面的信息
  view sourceprint?
  1.Server: Apache
  彻底让版本等敏感信息消失
  如果你需要彻底将版本之类的信息进行改头换面,你就需要在编译之前做准备或者进行从新编译了。在重新编译时,修改源码包下include目录下的ap_release.h文件
  view sourceprint?
  1.#define AP_SERVER_BASEVENDOR "Apache Software Foundation" #服务的供应商名称
  2.#define AP_SERVER_BASEPROJECT "Apache HTTP Server"  #服务的项目名称
  3.#define AP_SERVER_BASEPRODUCT "Apache"        #服务的产品名
  4.#define AP_SERVER_MAJORVERSION_NUMBER 2  #主要版本号
  5.#define AP_SERVER_MINORVERSION_NUMBER 4  #小版本号
  6.#define AP_SERVER_PATCHLEVEL_NUMBER  6  #补丁级别
  7.#define AP_SERVER_DEVBUILD_BOOLEAN  0  #
  上述列出的行,我已经给出了注释,大家可以修改成自己想要的,然后编译安装之后,再对httpd-default.conf文件进行修改,对方就彻底不知道你的版本号了。
  三、更改apache的默认用户
  我们通过更改apache的默认用户,可以提升apache的安全性。这样,即使apache服务被攻破,***拿到apache普通用户也不会对系统和其他应用造成破坏。这里创建的apache用户,将用于对子进程和线程的控制。
  view sourceprint?
  1.[root@c64-web /]# useradd -M -s /sbin/nologin apache 创建apache用户
  编辑apache配置文件,修改默认的用户。
  view sourceprint?
  1.[root@c64-web /]# vim /usr/local/apache/conf/httpd.conf
  2.User apache  #更改默认的daemon用户为apache用户
  3.Group apache  #更改默认的daemon用户为apache用户
  四、apache目录及文件权限设置
  在生产环境的网站架构中,我们应把资源文件,例如用户上传的图片及附件等和程序做好分离,最好是把上传程序也分离开来。这样才能更方便我们做好授权,保证apache服务和整个服务器安全。
  这里我们设置apache的网站目录属主和属组是root,权限是755,文件的权限为644。
  view sourceprint?
  1.lrwxr-xr-x  1 root root   23 11月  5 02:04 apache -> /usr/local/apache-2.4.6
  2.drwxr-xr-x 14 root root 4096 11月  5 12:37 apache-2.4.6
  并且,在对日志的授权商,我们要将属主和属组都设置为root,权限设置为700。
  view sourceprint?
  1.drwx------ 2 root root 4096 11月  5 02:46 logs
  由于apache日志的记录是由apache的主进程进行操作的,而apache的主进程又是root用户启动的,所以这里设置700是不影响日志记录了。这也是日志记录的最安全的方法。
  五、配置cronolog进行日志轮询
  由于apache自带的日志轮询工具rotatelogs,据专家说在进行日志切割时容易丢日志,因此我们通常使用cronolog进行日志轮询。
  1、下载并安装cronolog
  view sourceprint?
  1.[root@sunsky /]# cd /server/tools/
  2.[root@sunsky tools]# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz
  3.[root@sunsky tools]# tar zxf cronolog-1.6.2.tar.gz
  4.[root@sunsky tools]# cd cronolog-1.6.2
  5.[root@sunsky cronolog-1.6.2]# ./configure
  6.[root@sunsky cronolog-1.6.2]# make&&make install
  2、配置apache使用cronolog
  由于实验用的apache开启了虚拟主机功能,所以以下范例配置都在虚拟主机中进行。
  view sourceprint?
  1.[root@sunsky cronolog-1.6.2]# vim /usr/local/apache/httpd/extra/httpd-vhosts.conf
  将配置文件中的CustomLog和ErrorLog替换为下面的(由于我们要对多站点,所以这里要替换两个虚拟主机的,并且将日志存放名字做有效的区分才好)
  view sourceprint?
  1.CustomLog "|/usr/local/sbin/cronolog /app/logs/sunsky_access_%Y%m%d.log" combined
  2.ErrorLog "|/usr/local/sbin/cronolog /app/logs/sunsky_error_%Y%m%d.log"
  更多日志格式参考:
  view sourceprint?
  1.按天轮询(生产环境常见用法,推荐使用):
  2.CustomLog "|/usr/local/sbin/cronolog /app/logs/access_www_%Y%m%d.log" combined
  3.按小时轮询(生产环境较常见用法):
  4.CustomLog "|/usr/local/sbin/cronolog  /app/logs /access_www_ %Y%m%d%H.log" combined
  六、错误页面优雅显示
  为了提升网站的用户体验,避免404,403之类的丑陋的默认错误提示出现,我们需要对错误页面进行优化,让他们变的漂亮一点。错误页面不仅在于告诉用户访问出现了问题,而且需要引导用户到正确的页面。
  错误页面优雅化显示的实现方式主要有两种,下面我们主要以404错误为例:
  第一种:在apache的主配置文件httpd.conf中的标签内添加ErrorDocument配置。
  view sourceprint?
  1.[root@sunsky /]# vi /usr/local/apache/conf/httpd.conf
  2.<Directory "/www/html">
  3.AllowOverride None
  4.Options None
  5.Require all granted
  6.ErrorDocument 404 /404.html  #将404错误跳转到/www/html下的404.html页面上
  7.</Directory>
  第二种方法:在apache的虚拟主机配置文件httpd-vhost.conf中的中添加ErrorDocument配置。
  view sourceprint?
  01.<VirtualHost *:80>
  02.ServerAdmin 274546888@qq.com
  03.DocumentRoot "/www/html"
  04.ServerName www.sunsky.pw
  05.ServerAlias sunsky.pw
  06.CustomLog "|/usr/local/sbin/cronolog /app/logs/www_access_%Y%m%d.log" combined
  07.ErrorLog "|/usr/local/sbin/cronolog /app/logs/www_error_%Y%m%d.log"
  08.ErrorDocument 404 http://www.sunsky.pw ;  #将404错误跳转到http://www.sunsky.pw页面上
  09.</VirtualHost>
  从上面的两种解决方案,我们可以看出ErrorDocument的命令格式如下
  view sourceprint?
  1.ErrorDocument 错误代码 跳转到的页面或文件
  另外这里需要注意,你若设置跳转到文件,必须要有这个文件才行。另外文件必须在站点目录内,不然会报错。
  在跳转到文件的测试中,我用全路径和别名路径进行测试,当把404错误页面跳转文件放到其他目录的时候,不报错,但是页面跳转不过去。若跳转为未链接,则不影响。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-637150-1-1.html 上篇帖子: CentOS 6.7配置安装(Apache+PHP5+MySQL)LAMP服务器 下篇帖子: linux 网站架设调优Apache(二)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表