文档:http://httpd.apache.org/docs/2.4/

指令:http://httpd.apache.org/docs/2.4/mod/core.html

一、配置文件

语法

* 主配置文件httpd.conf,更改只有重启服务才会生效
* 配置中一行一个命令,如果要多行一个命令,则最后以\结束,且与该行最后个字符无其它字符或者空白
* 每行注释以#开头,会被忽略,一行命令符后不能再接注释
* 空行空白字符在配置文件中被忽略
* 配置文件错误检测可以通过 Test Configuration来完成(httpd.exe -w -t -f "D:\Software\GreenSoft\Apache\conf\httpd.conf" -d "D:\Software\GreenSoft\Apache\.")

模块

Related Modules Related Directives
--------------------------------------------
mod_so <IfModule>
LoadModule

* httpd基于模块化,编译配置时,默认会把基本的功能模块加载到服务器内核。
* 对于动态加载的模块可以通过LoadModule指令在任何时候完成。
* <IfModule>可用于条件加载
* Dos命令 httpd.exe -l 可以查看已经加载的模块

* httpd.exe支持的参数指令

-D name : define a name for use in <IfDefine name> directives
-d directory : specify an alternate initial ServerRoot
-f file : specify an alternate ServerConfigFile
-C "directive" : process directive before reading config files
-c "directive" : process directive after reading config files
-n name : set service name and use its ServerConfigFile
-k start : tell Apache to start
-k restart : tell running Apache to do a graceful restart
-k stop|shutdown : tell running Apache to shutdown
-k install : install an Apache service
-k config : change startup Options of an Apache service
-k uninstall : uninstall an Apache service
-w : hold open the console window on error
-e level : show startup errors of level (see LogLevel)
-E file : log startup errors to file
-v : show version number
-V : show compile settings
-h : list available command line options (this page)
-l : list compiled in modules
-L : list available configuration directives
-t -D DUMP_VHOSTS : show parsed settings (currently only vhost settings)
-S : a synonym for -t -D DUMP_VHOSTS
-t -D DUMP_MODULES : show all loaded modules
-M : a synonym for -t -D DUMP_MODULES
-t : run syntax check for config files
-T : start without DocumentRoot(s) check

指令作用范围

Related Modules Related Directives
-----------------------------------------
<Directory>
<DirectoryMatch>
<Files>
<FilesMatch>
<Location>
<LocationMatch>
<VirtualHost>

* 指令范围标签可以指定指令生效的范围,其可以嵌套
* 可以通过在<VirtualHost>标签中放置多个指令以同时支持多个虚拟主机站点
* 节点配置参见:http://httpd.apache.org/docs/2.4/sections.html

.htaccess文件

* httpd通过在站点目录里面放置.htaccess文件允许配置分散
* .htaccess的语法与主配置文件一致,对于该配置文件的变更只要请求过来会立即生效
* 可以在.htaccess中放置的指令见:http://httpd.apache.org/docs/2.4/mod/directive-dict.html#Context
* 如果有权限配置主配置,则应避免使用.htaccess文件方式来配置,这种方式影响服务器性能
1)配置.htaccess文件后,httpd会查找每个目录的.htaccess文件,不管你实际有没有使用
2)文档被请求的时候,.htaccess文件每次都会被加载

3)httpd会在多层目录中查找.htaccess文件,以应用完整的指令。
4).htaccess中地址重写指令中的正则表达式在每次请求的时候重新编译。
5)安全问题,用户在修改.htaccess使管理员对配置的管理失控。只有设置AllowOverride指令才可以使用户使用指定的指令。

* 在.htaccess中配置指令与在主配置中配置Dirctory块可以达到相同效果,但是后者有更好的性能。

Contents of .htaccess file in /www/htdocs/example
AddType text/example .exm

等价于:

Section from your httpd.conf file

<Directory /www/htdocs/example>
AddType text/example .exm
</Directory>

* 禁用.htaccess可以用指令 AllowOverride None

二、Apache目录结构

根目录
|-- bin 程序命令目录
|-- build
|-- cgi-bin
|-- conf 配置文件目录
|-- error
|-- htdocs 编译安装时站点目录
|-- icons
|-- include
|-- lib 
|-- logs 默认日志文件存放包括错误日志(error_log)和访问日志(access_log) tail -f access_log可以随时看访问记录, 里面httpd.pid还会记录主进程号
|-- man
|-- manual
|-- modules 模块目录 例如PHP MEMCACHE编译后的模块在这里面

Bin目录
|-- ab apache http服务器性能压力测试工具,类似的jmeter loadrunner webbench
|-- apachectl apache的启动命令
|-- apr-1-config
|-- apu-1-config
|-- apxs apache服务器编译和安装扩展的工具,在进行DSO方式模块编译时会用到例如编译PHP时就用到:--with-apxs2=/usr/local/apache/bin/apxs
|-- checkgid
|-- dbmmanage
|-- envvars
|-- envvars-std
|-- htcacheclean 清理磁盘缓存区的命令,一般少用
|-- htdbm
|-- htdigest
|-- htpasswd 建立更新基本认证文件 例如配置nagio监控时候会用到
|-- httpd 为apache的控制命令程序,apachectl执行的时候会调用到httpd
|-- httxt2dbm
|-- logresolve

Conf目录
|-- extra 辅助apache配置文件
| |-- httpd-autoindex.conf
| |-- httpd-dav.conf dav支持配置
| |-- httpd-default.conf apache相关服务配置 如超时时间 保持连接时间
| |-- httpd-info.conf
| |-- httpd-languages.conf 语言支持
| |-- httpd-manual.conf
| |-- httpd-mpm.conf 服务器池管理,如apache模式配置 连接等
| |-- httpd-multilang-errordoc.conf
| |-- httpd-ssl.conf 支持SSL加密配置
| |-- httpd-userdir.conf
| |-- httpd-vhosts.conf 虚拟机配置文件
|-- httpd.conf 主配置文件
|-- magic
|-- mime.types
|-- original

三、httpd.conf主配置文件常见配置

ServerRoot "/usr/local/apache2.2.22" apache安装目录
Listen 80 apache端口 
<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>
User daemon apache运行用户
Group daemon apache运行组
</IfModule>
</IfModule>
ServerAdmin you@example.com 管理员邮箱
DocumentRoot "/usr/local/apache2.2.22/htdocs" 站点目录,注意最后不要加/线

<Directory /> 根目录权限
Options FollowSymLinks 可以使用符号链接
AllowOverride None
Order deny,allow
Deny from all
</Directory>
<Directory "/usr/local/apache2.2.22/htdocs"> 目录权限 注意Indexes的作用是允许浏览目录
Options Indexes FollowSymLinks
AllowOverride None 禁止用户对目录配置文件.htaccess修改,一般为none
Order allow,deny
Allow from all 
</Directory>

<IfModule dir_module>
DirectoryIndex index.html 站点目录首页文件多个文件用空格隔开
</IfModule>

<FilesMatch "^\.ht"> 防止WEB用户查看以.ht开头的隐藏文件
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>

ErrorLog "logs/error_log" 错误日志
LogLevel warn 警告级别
<IfModule log_config_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 复合日志格式
LogFormat "%h %l %u %t \"%r\" %>s %b" common 常规日志格式
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio 复合日志格式
</IfModule>
CustomLog "logs/access_log" common 默认访问日志格式
</IfModule>

<IfModule alias_module>
ScriptAlias /cgi-bin/ "/usr/local/apache2.2.22/cgi-bin/" CGI别名配置
</IfModule>
<IfModule cgid_module>
</IfModule>

<Directory "/usr/local/apache2.2.22/cgi-bin"> CGI权限访问路径
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
DefaultType text/plain 定义不能确定MIME类型时候使用默认MIME类型,如果服务主要包含text或HTML ,text/plain是一个好选择

<IfModule mime_module>
TypesConfig conf/mime.types
AddType application/x-compress .Z 允许信息在传输中使用mosaic/x 2.1+解压信息 但不是所有浏览器都支持
AddType application/x-gzip .gz .tgz
</IfModule>

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

四、虚拟主机http_vhost.conf配置文件

NameVirtuaHost *:80 表示基于名称的虚拟主机 *:80表示监听本机所有IP的80端口上提供HTTP服务,*可以设置为具体IP
<VirtualHost *:80>
serveradmin 管理员邮箱
servername 域名
serveralias 别名 可以设置多个域名指向同一个站点
errorlog 错误日志
customlog 访问日志
</VirtualHost>

虚拟主机的配置是局部优先原则,也就是http_vhost.conf配置了,那么就不会从主配置文件http.conf中读取了

五、修改Apache默认站点目录

1、文档路径更改 
DocumentRoot "D:/Software/GreenSoft/Apache/htdocs" 
改成
DocumentRoot "E:/wwwroot/Apache"

2、目录更改
<Directory "D:/Software/GreenSoft/Apache/htdocs">
改成
<Directory "E:/wwwroot/Apache">

六、配置多站点方式

方式一 拷贝配置文件,安装新服务
1、将httpd.conf复制一个新的文件httpdNew.conf
2、将httpdNew.conf中的侦听端口改成未使用的自定义的端口。 Listen:8111
3、将httpdNew.conf中的网站目录 DocumentRoot "原绝对路径" 改成 DocumentRoot "新绝对路径"
4、将httpdNew.conf中的权限设置 <Directory "原绝对路径" > 改成 <Directory "新绝对路径" >
5、安装新服务。Dos下进到Apache安装目录下的Bin目录,输入命令 httpd.exe -k install -n "服务名" -f "X:\Apache安装目录根目录\conf\httpdNew.conf"
6、启动新服务。输入命令 httpd -k start

方式二 添加新端口,新虚拟目录的方式
1、httpd.conf在之前侦听端口的基础上,加上新侦听端口 Listen 8333.这样Apache有多个侦听端口
2、httpd.conf中加入虚拟主机支持。加入指令:NameVirtualHost *
3、找到<VirtualHost> definition注释所在位置。加入指令:
<VirtualHost localhost:8333>
ServerName localhost
DocumentRoot "虚拟站点新绝对路径"
</VirtualHost>

方式三 建立虚拟主机方式
1、修改虚拟主机配置文件 X:\Apache安装目录根目录\conf\extra\httpd-vhosts.conf文件.加入配置:
<VirtualHost 127.0.1.1:8222>
DocumentRoot "虚拟站点新绝对路径"
ServerName url.com
ErrorLog "虚拟站点新绝对路径/error.log"
</VirtualHost>

2、修改主配置文件X:\Apache安装目录根目录\conf\httpd.conf。去掉#Include conf/extra/httpd-vhosts.conf前面的#号
3、修改主配置文件X:\Apache安装目录根目录\conf\httpd.conf。加目录权限:
<Directory "虚拟站点新绝对路径">
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
4、重启对应的Apache服务

七、配置Apache支持Url重写

1、加载重写模块。httpd.conf中找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉#号
2、httpd.conf中找到AllowOverride None,改成 AllowOverride All (All表示整台服务器上都支持URL规则重写)
3、httpd.conf加入
<Directory "站点绝对路径">
Options FollowSymLinks
AllowOverride All
</Directory>
4、重启Apache服务器并启动服务
5、在URL重写的网站目录下放一个.htaccess文件,文件名是.htaccess。如无此文件或此文件中没定义任何关于URL重写的规则,则重写不会生效。
6、在.htaccess中通过正则表达式映射需要伪静态的页面。URL正则表达式如下:
RewriteEngine on
RewriteRule index.html index.php
RewriteRule (\d+).htmlinfo\.php\?infoid=1
效果为:www.abc.cn/info/info.php?infoid=100 映射为 www.abc.cn/info/100.html

可用于以下用途:
1、http错误的自定义页。格式 ErrorDocument 错误代码 /目录名/名.扩展名
ErrorDocument 404 /errors/notfound.html
ErrorDocument 401 "你权限访问该页面!"

2、拒绝某IP的访问
order allow,deny 
deny from 210.10.56.32 
deny from 219.5.45. 
deny from www.baidu.com
allow from all

3、保护.htaccess文档
4、Url转向(文档迁移,目录更改,显示友好易记的url)。格式:
Redirect /旧目录/旧文档名 新文档名
Redirect 旧目录 新目录

5、更改默认主页
DirectoryIndex 新的缺省名
DirectoryIndex filename.html index.cgi index.pl default.htm

6、反盗链
RewriteEngine on 
RewriteCond %{ HTTP_REFERER } !^RewriteCond [NC] 
RewriteRule .(gif&line;jpg)- [F]  RewriteRule .(gif&line;jpg) http://www.mydomain.com/替代名 [R,L]

八、配置反盗链
1、参见 配置Apache支持Url重写 节,配置Apache支持url重写
2、在站点的.htaccess文件中加入
RewriteEngine on
#允许空“HTTP_REFERER”的访问
RewriteCond %{HTTP_REFERER} !^[NC]RewriteCond http://nobing.cn/no.png [R,NC,L]

说明:
R 就是转向的意思
NC 指的是不区分大小写
L 的作用是指明本次转向到此结束,后续的转向不受先前判断语句的影响

多个扩展名用|分隔

九、配置缓存

LoadModule cache_module modules/mod_cache.so 
LoadModule mem_cache_module modules/mod_mem_cache.so 
<IfModule mod_cache.c> 
#默认缓存有效期(秒)
CacheDefaultExpire 3600 
CacheMaxExpire 86400 
CacheLastModifiedFactor 0.1

#禁止缓存某些特定的URL 
CacheDisable /local_files 
#使用特定的存储类型缓存某些特定的URL 
CacheEnable mem /manual 
CacheEnable fd /images 
CacheEnable disk / 
<IfModule mod_mem_cache.c> 
CacheEnable mem / 
MCacheSize 8192 
MCacheMaxObjectCount 10000 
MCacheMinObjectSize 1 
MCacheMaxObjectSize 51200 
#MCacheRemovalAlgorithm LRU 
</IfModule> 
</IfModule>

Apache服务器的安装与配置的更多相关文章

  1. Apache服务器的安装和配置

    启动 Apache,让别人可以使用你机器上安装的 Apache 提供的 Web 服务,访问你机器上的网站.这种情况下你的机器就是服务器,别人的机器就是客户端 appsevApache服务器的基本安装 ...

  2. Ubuntu12.04下apache服务器的安装也配置

    安装步骤 1.下载httpd http://httpd.apache.org/ 2.解压缩httpd tar vxzf httpd-2.4.6.tar.gz 3.安装httpd 进入解压缩后的目录 c ...

  3. 在Linux(CentOS 6.6)服务器上安装并配置基于Apache的SVN服务器

    #!/bin/bash # # 在Linux(CentOS 6.6)服务器上安装并配置基于Apache的SVN服务器: # # .安装服务 # .创建svn版本库 # .创建svn用户 # .配置sv ...

  4. Tomcat系列之服务器的安装与配置以及各组件详解

    Tomcat系列之服务器的安装与配置以及各组件详解 大纲 一.前言 二.安装与配置Tomcat 三.Tomcat 目录的结构 四.Tomcat 配置文件 注,本文的测试的操作系统为CentOS 6.4 ...

  5. Rsyslog服务器的安装与配置

    一.Rsyslog服务器的安装与配置 1.清空iptabels, 关闭selinux避免安装过中报错 清空iptables iptables -F service iptables save 关闭se ...

  6. CentOS 6.3下Samba服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了CentOS 6.3下Samba服务器的安装与配置方法(图文详解),需要的朋友可以参考下   一.简介  Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件, ...

  7. FTP服务器的安装和配置

    FTP服务器的安装和配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本来是想出一个源码安装ftp的教程,但是想想还是算了,如果你自学python有个10天的话你自己就能写一个f ...

  8. 【转载】Linux NFS服务器的安装与配置

    一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 ...

  9. ubuntu下nfs服务器的安装与配置

    nfs服务器的安装和配置 1.安装nfs 服务器,前提是你的系统能连上网. 2.设置/etc/exports配置文件 (1) 进入/etc/exports配置文件 (2) 在最后一行加入红色那行,/h ...

随机推荐

  1. jquery完成界面无刷新加载登陆注册

    昨天公司说官网的登陆注册每次要跳转到另一个界面,能不能做一个简单的,在界面弹出一个框框登陆,我想了想做了这么一个案例,大家来看看成不成 贴上代码,实现了在同一个弹出窗上加载了登陆注册功能!可自由点击! ...

  2. 【转】Java工程师成神之路

    针对本文,博主最近在写<成神之路系列文章> ,分章分节介绍所有知识点.欢迎关注. 一.基础篇 1.1 JVM 1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收 h ...

  3. 【C#数据结构系列】排序

    一:排序 排序(Sort)是计算机程序设计中的一种重要操作,也是日常生活中经常遇到的问题.例如,字典中的单词是以字母的顺序排列,否则,使用起来非常困难.同样,存储在计算机中的数据的次序,对于处理这些数 ...

  4. JAVA设计模式详解(四)----------单例模式

    上一章我们学习了装饰者模式,这章LZ带给大家的是单例模式. 首先单例模式是用来干嘛的?它是用来实例化一个独一无二的对象!那这有什么用处?有一些对象我们只需要一个,比如缓存,线程池等.而事实上,这类对象 ...

  5. HDU4662(SummerTrainingDay03-B)

    MU Puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  6. Hadoop HDFS 的 HttpFS

    参考 Hadoop权威指南 第3章中3.4节 背景 要写一个操作HDFS的web后台(文件CRUD),虽然可以直接使用HDFS提供的FileSystem类然后通过get方法获取到一个Distribut ...

  7. Javascript 函数及其执行环境和作用域

    函数在javascript中可以说是一等公民,也是最有意思的事情,javascript函数其实也是一个对象,是Function类型的实例.因此声明一个函数首先可以使用 Function构造函数: va ...

  8. 【CDQ分治】[HNOI2010]城市建设

    题目链接 线段树分治+LCT只有80 然后就有了CDQ分治的做法 把不可能在生成树里的扔到后面 把一定在生成树里的扔到并查集里存起来 分治到l=r,修改边权,跑个kruskal就行了 由于要支持撤销, ...

  9. js-ES6学习笔记-module(3)

    1.如果想设置跨模块的常量(即跨多个文件),或者说一个值要被多个模块共享,可以采用下面的写法. // constants.js 模块 export const A = 1; export const ...

  10. CPA理论与Base理论

    CPA理论: 由于对系统或者数据进行了拆分,我们的系统不再是单机系统,而是分布式系统,针对分布式系统的CAP原理包含如下三个元素. C:Consistency,一致性.在分布式系统中的所有数据 备份, ...