Apache的几种常用配置

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

写入:

<Directory /data/www/abc>     #/data/www/abc为将要访问的页面的目录

AllowOverride AuthConfig

AuthName "cct"        

AuthType Basic

AuthUserFile /data/.htpasswd  #指定存放用户名和密码的文件

require valid-user

</Directory>

保存退出,生成密码文件

htpasswd -c /data/.htpasswd cct #指定用户名为cct,输入自己设定的密码

/usr/local/apache2/bin/apachectl graceful  加载配置

     二、默认虚拟主机

   有些时候,为了web服务安全性,我们需要设置默认的虚拟主机。

    编辑虚拟主机的配置文件:

<VirtualHost *:80>

    DocumentRoot "/tmp/111"     #该目录可以不存在

    ServerName 111.com

  </VirtualHost>

<VirtualHost *:80>

DocumentRoot "/data/www"

ServerName

ServerAlias

   </VirtualHost>

将这段设定放在虚拟主机配置的最上面。除了已作过设置的域名(aaa、test)外,其余访问的域名均跳转到/tmp/111下。

  三、rewrite规则

下列代码均写在<IfModule mod_rewrite.c>模块下

1.域名301跳转

  web服务可能会用到多个域名,域名有主有次,输入次域名会自动跳转到主域名进行访问。设定为301永久跳转,302是暂时跳转。

编辑虚拟主机的配置文件:

写入:

   <IfModule mod_rewrite.c>

        RewriteEngine on      #打开rewrite功能

        RewriteCond %{HTTP_HOST} ^$ [OR]

        RewriteCond %{HTTP_HOST} ^$ 

        RewriteRule ^/(.*)$ $1 [R=301,L]  

   </IfModule>   

 调用了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}    表示:当前访问的网址,只是指前缀部分,格式是不包括“”和“/”

%{REQUEST_URI}     表示:表示访问的相对地址,就是相对根目录的地址,就是域名/后面的成分,格式上包括最前面的“/”,

/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的定义:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5c74963c9b0bdd8a5b9a41e27fc64ef3.html