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 www.test.com

ServerAlias www.aaa.com

</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} ^www.aaa.com$ [OR]

RewriteCond %{HTTP_HOST} ^www.bbb.com$

RewriteRule ^/(.*)$ http://www.test.com/$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}    表示:当前访问的网址,只是指前缀部分,格式是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模块

<IfModule 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"

</IfModule>

六、配置防盗链

防止其他的网站大量使用自己网站里的一些图片,流量跑的是自己的网站,造成带宽的浪费。防止图片被盗用。

在虚拟主机的配置文件里加上:

SetEnvIfNoCase Referer "^http://.*\.test\.com" local_ref  #给网址做标注

<filesmatch "\.(txt|png|gif|doc|mp3|zip|rar|jpg|css|js)">  #规定一下哪些类型的文件

Order Allow,Deny                             #禁止引用

Allow from env=local_ref                      #允许local_ref引用

</filesmatch>

七、访问控制

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

<Directory "/data/www">

AllowOverride None

Options None

Order allow,deny

Allow from all

deny from 192.168.206.1    #该IP地址为禁止访问的ip地址

</Directory>

还有一种以URI做限制访问

<filesmatch "(.*)admin(.*)">

Order allow,deny

Allow from all

Deny from 192.168.206.1

</filesmatch>

所有uri中包括admin的都进行ip访问限制

八、apache禁止解析php

多用在在网络安全方面,比如:某些目录上传文件,避免上传的有木马,针对某些路径禁止解析php。

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

<Directory /data/www/data>  #对data目录进行php解析限制。

php_admin_flag engine off
 #将php解析引擎关闭

<filesmatch "(.*)php">  #匹配

Order deny,allow

Deny from all
  #禁止解析所有,若不加filesmatch,只是将engine off,在浏览器访问该文件时,             会将php文件下载下来,这样不好

</filesmatch>

</Directory>

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

时间: 2024-10-04 04:40:49

Apache的几种常用配置的相关文章

nginx的几种常用配置

1. 设置默认虚拟主机 对没有匹配的Host值时,返回错误403到客户端 server {    listen       80 default_server;    server_name  _;    return       403;} 2. 用户认证 用户认证需要用到apache的htpasswd命令生成密码,如果没有安装apache,可以使用yum install httpd安装. 生成密码文件,创建用户 htpasswd -c /usr/local/nginx/conf/htpass

NetScaler常用配置方法----AG不做认证ICA Proxy

之前一直是看大神们的文档,当时看的时候也没有跟着一步一步操作,或者是跟着操作了,其实但是不是太理解为什么那样做,有句话怎么说来着?哦,对,就是知其然而不知所以然.所以自己很想把所有的东西都搞明白,弄清楚. 今天算是个开头吧,希望以后能坚持下来记录一些零零散散的东西,对自己,对其他同仁有所帮助. 可能大家都看过廖大神和他同事写的关于NetScaler三种常用配置,如果没有看过的话就去百度文库上搜一下.这里给大家一个连接:http://wenku.baidu.com/view/9cd6df966be

Spring下配置几种常用连接池

1.连接池概述 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正是针对这个问题提出来的. 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏.这项技术能明显提高对数据库操作的性能. 数据库连接池在初始化时将创建一定数

Apache httpd服务——常用配置

httpd 2.4 常用配置 yum安装后默认配置文件 1 ~]# cat /etc/httpd/conf/httpd.conf 2 ServerRoot "/etc/httpd" 3 Listen 80 4 Include conf.modules.d/*.conf 5 User apache 6 Group apache 7 ServerAdmin [email protected] 8 ServerName www.example.com:80 9 <Directory /

spring 中常用的两种事务配置方式以及事务的传播性、隔离级别

转载:http://blog.csdn.net/qh_java/article/details/51811533 一.注解式事务 1.注解式事务在平时的开发中使用的挺多,工作的两个公司中看到很多项目使用了这种方式,下面看看具体的配置demo. 2.事务配置实例 (1).spring+mybatis 事务配置 [html] view plain copy <!-- 定义事务管理器 --> <bean id="transactionManager" class="

Apache的常用配置详解

httpd-2.2的常用配置: 主配置文件:/etc/httpd/conf/httpd.conf Section 1: Global Environment Section 2: 'Main' server configuration Section 3: Virtual Hosts 配置格式: 1.修改监听的端口: Listen 80 2.持久连接: KeepAlive Off  (默认关闭) 开启持久连接: KeepAlive On MaxKeepAliveRequests 100  (一个

笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDispatcher 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <filter>     <filter-name>struts2</filter-name>     <filter-class>org.apache.struts2.di

如何使用JavaScript快速的创建一种常用类型的导航组件:sidebar

本文标签: JavaScript小技巧 JavaScript JavaScript函数 JavaScript处理sidebar JavaScript导航组件 sidebar是一种常用类型的导航组件,它可从页面旁侧弹出,覆盖在正常内容上. 假设你的正常内容为: <div id="main"> Placeholder<p> Placeholder<p> Placeholder<p> </div> 现在我们可以在内容内加入sideb

最全面 Nginx 入门教程 + 常用配置解析

转自 http://blog.csdn.net/shootyou/article/details/6093562 Nginx介绍和安装 一个简单的配置文件 模块介绍 常用场景配置 进阶内容 参考资料 == Nginx介绍和安装 == Nginx是一个自由.开源.高性能及轻量级的HTTP服务器及反转代理服务器, 其性能与IMAP/POP3代理服务器相当.Nginx以其高性能.稳定.功能丰富.配置简单及占用系统资源少而著称. Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx