小Q:我们都希望喝酒的时候有个人会深情的看着我温柔的说,少喝点,伤身体,
麻痹现实中却总是有个煞笔在旁边吼,闹啥那,养鱼啊,喝完。。。。。。
今天国庆放假了,大家都回去了,剩我自己在宿舍默默的奋斗,挺孤单的;不过我一直告诉自己强者往往是孤独的,我做不了强者,不过我也要能适应这分孤独;
今天主要是紧接着前几天LAMP架构和discuz论坛来配置Apache的各个配置模块,
来实现服务器网站的一些配置。
Apache 切割日志:
底部有截图介绍
有时候我们访问一个网站,随便点几下,就会在他的日志文件下产生几百条数据,当一个网站点击率多时,我们的磁盘压力就太大了。为了解决问题,我们不仅需要一个大的磁盘,还要进行切割这样我们就能有选择地实时删除分割日志,来记录重要数据。
进入虚拟主机配置文件 :
/usr/local/apacje2/conf/extra/httpd-vhosts_conf
将 ErrorLog ・・・・・・・・ 和 CustomLog ・・・・・・・・・ common 注释去掉,
引号内可自定义日志所在的相对路径 后者的common格式解释在Apache2配置文件
common 和 combined 格式介绍:
%h 来源IP %I 不存在,用-表示 %u 用户 %t 时间 "\%r\" 动作 %>s 访问的东西
%b 状态码 %refer 网址的路径 "%{User-Agent 浏览器的标识
最好将common格式改为combimed格式
配置分割日志:添加
CustomLog “|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access_%y%m%d_log 86400 ”
此时用绝对路径,为防止命令找不到路径; -l 好像是指示中国时间 86400 以秒为单位,便是以天分割日志,可以用更改系统时间的方式更新检验
而 ErrorLog 错误日志,一般不用,毕竟出错的记录不多
Apache 不记录指定类型:
底部有截图
我们刷新一下网站就会看到的日志记录了大量的信息,但是大部分信息都是由静态图片方块产生的,无用而且站磁盘,在我们需要查看来访IP做了什么时也不方便找,我们就要想办法去掉这些无用的文件类型;
进入虚拟主机配置文件:
vim /usr/local/apache2/conf/extra/httpd-vhost.conf
在主模块,即日志文件上下插入即可
SetEnvIf Request_URI ".*\.gif$" image-request
SetEnvIf Request_URI ".*\.jpg$" image-request
SetEnvIf Request_URI ".*\.png$" image-request
SetEnvIf Request_URI ".*\.bmp$" image-request
SetEnvIf Request_URI ".*\.swf$" image-request
SetEnvIf Request_URI ".*\.js$" image-request
SetEnvIf Request_URI ".*\.css$" image-request
EorrLog ・・・・・・・・・・・・・・・・・・
CustomLog ```````````````` combined 加 (显示)env = ! image-request 只记录不是 image-request 的文件,要加在customlog 同一行;
静态配置缓存:
底部有截图
比如有一个网站,每个页面都会有大量的图片logo方块等文件,不止占内存,在更新页面时还浪费带宽;每次请求(进入或刷新)网页时,服务器都要发送界面信息到浏览器,期间的传输就会有大量的带宽流失,为了解决这个,我们把一些静态的配置都缓存到了浏览器,
用户请求时,就可以直接调用浏览器的缓存资源,
可以大量节省服务器传送消耗的带宽。
进入虚拟主机配置:
vim /usr/local/apache2/conf/extrs/httpd-vhost.conf
主模块下加静态缓存模块:
<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/gif "access plus 1 days" gif 文件缓存时间为一天
ExpiresByType image/jpeg "access plus 24 hours"
ExpiresByType image/png "access plus 24 hours"
ExpiresByType image/css "access plus 2 hours" css 文件缓存大约两小时
ExpiresByType application/x-javascripts "now plus 2 hours"
ExpiresByType application/x-shockwave "now plus 2 hours" 两小时立刻吧
ExpiresDefault "now plus 0 min"
</IfModule>
保存 检测 重启或重加载
curl测试: curl -x127.0.0.1:80 ‘图片或者什么的衔接网址’ -I
127.0.0.1 也是localhost 在/etc/hosts里面有定义,是个回环地址,windows linux上都有的,包括你的安卓手机,这个网络通信必须要有的
输出中有一行:
Cache-Control: max-age=86400 就代表的缓存时间,以秒为单位
配置防盗链:
底部有截图
比如我们有一个网站,里边有好多好玩的图片视频什么的;别人可以复制我们的衔接放到他们要放的地方(比如博客空间・・・),然后我们图片的衔接就会转变成,他所放位置的网站的一个衔接(就是说这个图片已经不再是只属于我们的了),而且他复制我们的衔接的时候,用的还是我们网站的带宽,
我们损失就有点大了;所以就有了防盗链,我们网站上的东西只要一更换衔接就看不到了;
期间涉及一个跳转(refere)的概念:我们现在所在的页面是通过点击的哪个refere过来的;
进入虚拟主机配置文件:
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
设置白名单(添加模块):
SetEnvIfNocase Referer "^http://.*\.test\.com" local_ref
SetEnvIfNocase Referer "^http://.*\.test\.com" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png|js|css)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
模块放在域名跳转与静态缓存之间的 </IfModule>模块内即可
保存 退出 检测 重启
Apache的访问控制:
底部有截图
有时我们会发现阿哦们日志内会发现有个IP一直在重复一个错误的操作,有可能我们网站正在被黑,
所以我们要禁止这个IP访问,可以通过命令临时,或者把它加到黑名单;
我们可以去主机的配置文件 /usr/local.apache2/conf/httpd.onf 中拷贝个模板,见下
进入虚拟主机配置文件 :
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
添加模板:在主域名模块下
<Directory "/data/www"> 网站所在地址
Options None
AllowOverride None
Order allow,deny 是指先执行谁,在这先执行allow
Allow from all
Deny from 127.0.0.1 127.0.0.1 是回环网卡,系统自带,到时设置要改回来
</Directory>
上设置了一个黑名单限制127.0.0.1,我们也可以设置白名单,只要明白原理就好,但是注意
Order deny,allow
Allow from all
Deny from 127.0.0.1 这样就起无效果了,因为限制了IP,之后有allow允许了所有IP
还有一种方式,用我们上节防盗链引用的模块。我们的登录形式有可能是主页直接登陆
www.test.com/forum.php``````或者以www.test.com/admin.php・・・・・・・・・
后台方式登陆,以后台登录为例限制
<filesmatch "(.*)admin(.*)"> 引号内就是针对这种形式的域名,进行限制
Order Allow,Deny
Allow from all
Deny from 127.0.0.1 实验完要改回来
</filesmatch>
保存 检测 重加载
测试:curl -x127.0.0.1:80 -I www.baidu.com
对比: curl -x192.168.1.103:80 -I www.baidu.com 观察状态码
禁止解析php:
底部有截图
在我们安装discuz的时候,我们对data config 文件设置了daemon为所属主,就是说所有人都可以访问这个目录下的文件,并可写(即可上传文档);有时我们的网站有一些漏洞,一些黑客就可以上传木马文档,当一点击网站就会自动解析,那后果就严重了;
解决方法有:我们可以改权限不让用户上传文件,显然是不行;另一种方法就是不让网站解
析php文件,so即使上传了木马文件,文件不去解析也没事;
禁止解析对我们保护重要文件也好,免得任何人都能看到我们的重要文件;
进入虚拟主机的配置文件:
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
添加模块:在防盗链上面
<Directory /data/www/data> 要防止解析的目录
php_admin_flag engine off
<filesmatch "(.*)php"> 这几句话不添加的话,当你访问路径下的文件时,
Order Allow,Deny 他会直接提示下载,源代码就被下载走了,也不行
Allow from 127.0.0.1
Deny from all
</filesmatch>
</Directory>
保存 检测 重加载
这样配置好之后,网站就不会自动解析这个目录下的任何文件,就会显示403错误
可用curl可测试