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

[经验分享] Apache的几种常用配置

[复制链接]

尚未签到

发表于 2018-11-19 07:13:37 | 显示全部楼层 |阅读模式
  Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
       下面介绍几个常用的apache命令:
/usr/local/apache2/bin/apachectl -M  查看常见的模块(包括动态和静态)
/usr/local/apache2/bin/apachectl -l    查看加载的静态模块
/usr/local/apache2/bin/apachectl -t    检查配置文件有无语法错误
/usr/local/apache2/bin/apachectl graceful  加载配置文件,但不重启
/usr/local/apache2/bin/apachectl start/restart/stop   启动/重启/停止apache服务
下列的配置在apache2.2.31版本实测。
一、用户认证

有些时候访问网站下的一些页面时,需要用户认证。

编辑虚拟主机的配置文件:
vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
写入:
       #/data/www/abc为将要访问的页面的目录
  AllowOverride AuthConfig
  AuthName "cct"
  AuthType Basic
  AuthUserFile /data/.htpasswd  #指定存放用户名和密码的文件
  require valid-user
  
  保存退出,生成密码文件
  htpasswd -c /data/.htpasswd cct #指定用户名为cct,输入自己设定的密码
  /usr/local/apache2/bin/apachectl graceful  加载配置
       二、默认虚拟主机
      有些时候,为了web服务安全性,我们需要设置默认的虚拟主机。
      编辑虚拟主机的配置文件:
  
      DocumentRoot "/tmp/111"     #该目录可以不存在
      ServerName 111.com
    
  
  DocumentRoot "/data/www"
  ServerName www.test.com
  ServerAlias www.aaa.com
     

  将这段设定放在虚拟主机配置的最上面。除了已作过设置的域名(aaa、test)外,其余访问的域名均跳转到/tmp/111下。
    三、rewrite规则
  下列代码均写在模块下
  1.域名301跳转
    web服务可能会用到多个域名,域名有主有次,输入次域名会自动跳转到主域名进行访问。设定为301永久跳转,302是暂时跳转。
  编辑虚拟主机的配置文件:
  写入:
     
          RewriteEngine on      #打开rewrite功能
          RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR]
          RewriteCond %{HTTP_HOST} ^www.bbb.com$  
          RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]   
       
   调用了rewrite模块,RewriteCond是跳转条件,RewriteRule是跳转规则。
  2.禁止指定user_agent
    RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR] #禁止curl和chrome浏览器访问
    RewriteCond %{HTTP_USER_AGENT} ^.*chrome.* [NC] #NC是不区分大小写的意思
    RewriteRule .* - [F]  #为禁止的意思
  3.通过rewrite限制某个目录
    RewriteCond %{REQUEST_URI} ^.*/tmp/.* [NC] #禁止访问tmp目录
  RewriteRule .* - [F]
  4.rewrite规则
  1) [R=301](force redirect) 强制外部重定向
  2) [F]禁用URL,返回403HTTP状态码。
  3)[NC](no case) 不区分大小写
  4) [OR] 或者
  变量:
  %{HTTP_USER_AGENT}      表示:访问的user_agent
  %{HTTP_HOST}    表示:当前访问的网址,只是指前缀部分,格式是www.xxx.com不包括“http://”和“/”
  %{REQUEST_URI}     表示:表示访问的相对地址,就是相对根目录的地址,就是域名/后面的成分,格式上包括最前面的“/”,
  www.123.com/xiang/1.html 黑字表示HOST,绿色部分表示URI
  四、日志切割与管理
   web服务器出现大量的访问日志和错误日志,所以我们要对日志进行切割,方便管理人员的查询。一些并不重要的记录,我们可以规定日志中不显示这些。
   首先我们先将虚拟主机配置文件里的日志记录打开,日志的路径在/usr/local/apache2/logs下
   ErrorLog "logs/test.com-error_log"  #错误日志
  CustomLog "logs/test.com-access_log" common    #common是日志类型
   在apache的主配置文件里我们可以看到日志的相关格式规定

   LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  LogFormat "%h %l %u %t \"%r\" %>s %b" common
   %h 是来源ip
  %u 访问的user
  %t时间
  %r 动作
   有些时候一些用户使用代理服务器,这里的%h会显示代理ip,在%h后面加上%{X-FORWARDED-FOR}i 即显示真实ip。

   1.日志切割
  修改虚拟主机的access log的定义:
    CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400" combined      #%Y%m%d规定年月日; 86400秒即为一天切割。

  2.不记录指定文件类型的日志
      ErrorLog "logs/test.com-error_log"
  SetEnvIf Request_URI ".*\.gif$" image-request   #对gif文件做一个标记 image-request,也可以写成abc   
   SetEnvIf Request_URI ".*\.jpg$" image-request     #setenvif要和customlog写在一起
   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
  CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400" combined env=!image-request     #不记录做过标记的文件
  注意:SetEnvIf要和customlog写在一起,中间不要有分隔。
  五、配置静态缓存
  对于图片,html,css,javascripts等,让客户端缓存,让访问时不需要去服务器上访问,提高用户体验,需要提前确认是否支持mod_expires.c模块
  
    ExpiresActive on
    ExpiresByType image/gif  "access plus 1 days"
    ExpiresByType image/jpeg "access plus 24 hours"
    ExpiresByType image/png  "access plus 24 hours"
    ExpiresByType text/css   "now plus 2 hours"
    ExpiresByType application/x-javascript      "now plus 2 hours"
    ExpiresByType application/x-shockwave-flash "now plus 2 hours"
    ExpiresDefault "now plus 0 min"
  
  
六、配置防盗链


  防止其他的网站大量使用自己网站里的一些图片,流量跑的是自己的网站,造成带宽的浪费。防止图片被盗用。
在虚拟主机的配置文件里加上:
SetEnvIfNoCase Referer "^http://.*\.test\.com" local_ref  #给网址做标注
      #规定一下哪些类型的文件
    Order Allow,Deny                             #禁止引用
    Allow from env=local_ref                      #允许local_ref引用

七、访问控制


我们可以针对某些目录进行访问控制,禁止一些IP地址的访问

    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
    deny from 192.168.206.1    #该IP地址为禁止访问的ip地址

还有一种以URI做限制访问

    Order allow,deny
    Allow from all
    Deny from 192.168.206.1

所有uri中包括admin的都进行ip访问限制
八、apache禁止解析php
多用在在网络安全方面,比如:某些目录上传文件,避免上传的有***,针对某些路径禁止解析php。
  编辑虚拟主机的配置文件,加入:
  #对data目录进行php解析限制。
  php_admin_flag engine off #将php解析引擎关闭
    #匹配
  Order deny,allow
  Deny from all  #禁止解析所有,若不加filesmatch,只是将engine off,在浏览器访问该文件时,             会将php文件下载下来,这样不好
  
  


Apache的几种常用设置就整理到这,希望能够帮到运维的同仁们!


  


  






运维网声明 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-636722-1-1.html 上篇帖子: 使用Apache Flume抓取数据(1) 下篇帖子: Debain update apache error AH00111: Config variable ${APACHE_RUN_DIR} is not de
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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