第 十 九 天 :架 构 下 Apache 的 基 本 配 置

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     就代表的缓存时间,以秒为单位


wKiom1YL25eApTttAAE4KM-XhwQ659.jpg



配置防盗链:

底部有截图

比如我们有一个网站,里边有好多好玩的图片视频什么的;别人可以复制我们的衔接放到他们要放的地方(比如博客空间・・・),然后我们图片的衔接就会转变成,他所放位置的网站的一个衔接(就是说这个图片已经不再是只属于我们的了),而且他复制我们的衔接的时候,用的还是我们网站的带宽,

我们损失就有点大了;所以就有了防盗链,我们网站上的东西只要一更换衔接就看不到了;


期间涉及一个跳转(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可测试


wKiom1YL40nQQecYAAL8tWu6RP8379.jpg

wKiom1YL40miUwRCAAOgcLssunI142.jpg

wKioL1YL41WRISDiAAUChroDQkc920.jpg

wKiom1YL417BWLlQAAE8_pbKclc616.jpg

wKioL1YL42rjwFDXAAExeqCeSPk353.jpg

wKiom1YL416j4FG7AADi9D6rZ3U381.jpg

wKioL1YL42rTN1GNAADlTirNU-Y060.jpg

wKiom1YL41-y4w5pAAGXnjk3HwE871.jpg

wKioL1YL42vQ2StjAAEj_c07qGQ599.jpg

wKiom1YL41_icDb7AAC0GCGrEc4961.jpg

wKioL1YL426wTUEoAAMzi1xJUYQ044.jpg







你可能感兴趣的:(linux)