文档: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 ModulesRelated Directives
--------------------------------------------
mod_so
LoadModule
* httpd基于模块化,编译配置时,默认会把基本的功能模块加载到服务器内核。
* 对于动态加载的模块可以通过LoadModule指令在任何时候完成。
* 可用于条件加载
* Dos命令 httpd.exe -l 可以查看已经加载的模块
* httpd.exe支持的参数指令
-D name : define a name for use in 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 ModulesRelated Directives
-----------------------------------------
* 指令范围标签可以指定指令生效的范围,其可以嵌套
* 可以通过在标签中放置多个指令以同时支持多个虚拟主机站点
* 节点配置参见: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
AddType text/example .exm
* 禁用.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端口
User daemon apache运行用户
Group daemon apache运行组
ServerAdmin you@example.com 管理员邮箱
DocumentRoot "/usr/local/apache2.2.22/htdocs" 站点目录,注意最后不要加/线
根目录权限
Options FollowSymLinks 可以使用符号链接
AllowOverride None
Order deny,allow
Deny from all
目录权限 注意Indexes的作用是允许浏览目录
Options Indexes FollowSymLinks
AllowOverride None 禁止用户对目录配置文件.htaccess修改,一般为none
Order allow,deny
Allow from all
DirectoryIndex index.html 站点目录首页文件多个文件用空格隔开
防止WEB用户查看以.ht开头的隐藏文件
Order allow,deny
Deny from all
Satisfy All
ErrorLog "logs/error_log" 错误日志
LogLevel warn 警告级别
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 复合日志格式
LogFormat "%h %l %u %t \"%r\" %>s %b" common 常规日志格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio 复合日志格式
CustomLog "logs/access_log" common 默认访问日志格式
ScriptAlias /cgi-bin/ "/usr/local/apache2.2.22/cgi-bin/" CGI别名配置
CGI权限访问路径
AllowOverride None
Options None
Order allow,deny
Allow from all
DefaultType text/plain 定义不能确定MIME类型时候使用默认MIME类型,如果服务主要包含text或HTML ,text/plain是一个好选择
TypesConfig conf/mime.types
AddType application/x-compress .Z 允许信息在传输中使用mosaic/x 2.1+解压信息 但不是所有浏览器都支持
AddType application/x-gzip .gz .tgz
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
四、虚拟主机http_vhost.conf配置文件
NameVirtuaHost *:80表示基于名称的虚拟主机 *:80表示监听本机所有IP的80端口上提供HTTP服务,*可以设置为具体IP
serveradmin 管理员邮箱
servername 域名
serveralias 别名 可以设置多个域名指向同一个站点
errorlog 错误日志
customlog 访问日志
虚拟主机的配置是局部优先原则,也就是http_vhost.conf配置了,那么就不会从主配置文件http.conf中读取了
五、修改Apache默认站点目录
1、文档路径更改
DocumentRoot "D:/Software/GreenSoft/Apache/htdocs"
改成
DocumentRoot "E:/wwwroot/Apache"
2、目录更改
改成
六、配置多站点方式
方式一 拷贝配置文件,安装新服务
1、将httpd.conf复制一个新的文件httpdNew.conf
2、将httpdNew.conf中的侦听端口改成未使用的自定义的端口。 Listen:8111
3、将httpdNew.conf中的网站目录 DocumentRoot "原绝对路径" 改成 DocumentRoot "新绝对路径"
4、将httpdNew.conf中的权限设置 改成
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、找到 definition注释所在位置。加入指令:
ServerName localhost
DocumentRoot "虚拟站点新绝对路径"
方式三 建立虚拟主机方式
1、修改虚拟主机配置文件 X:\Apache安装目录根目录\conf\extra\httpd-vhosts.conf文件.加入配置:
DocumentRoot "虚拟站点新绝对路径"
ServerName url.com
ErrorLog "虚拟站点新绝对路径/error.log"
2、修改主配置文件X:\Apache安装目录根目录\conf\httpd.conf。去掉#Include conf/extra/httpd-vhosts.conf前面的#号
3、修改主配置文件X:\Apache安装目录根目录\conf\httpd.conf。加目录权限:
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
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加入
Options FollowSymLinks
AllowOverride All
4、重启Apache服务器并启动服务
5、在URL重写的网站目录下放一个.htaccess文件,文件名是.htaccess。如无此文件或此文件中没定义任何关于URL重写的规则,则重写不会生效。
6、在.htaccess中通过正则表达式映射需要伪静态的页面。URL正则表达式如下:
RewriteEngine on
RewriteRule index.html index.php
RewriteRule (\d+).htmlinfo\.php\?infoid= info\.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 RewriteCond [NC]
RewriteRule .(gif&line;jpg)- [F] 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 [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
#默认缓存有效期(秒)
CacheDefaultExpire 3600
CacheMaxExpire 86400
CacheLastModifiedFactor 0.1
#禁止缓存某些特定的URL
CacheDisable /local_files
#使用特定的存储类型缓存某些特定的URL
CacheEnable mem /manual
CacheEnable fd /images
CacheEnable disk /
CacheEnable mem /
MCacheSize 8192
MCacheMaxObjectCount 10000
MCacheMinObjectSize 1
MCacheMaxObjectSize 51200
#MCacheRemovalAlgorithm LRU
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com