1 概述
本文主要介绍了http常见的15中常见配置。为了后期维护方便,建议不要更改etc/httpd/conf/httpd.conf,只需要在路径/etc/httpd/conf.d/增加子配置文件,以.conf结尾的后缀的文件,因为在主配置文件里有配置Include conf.d/*.conf,将子配置文件包括进去。
本文介绍了如下15中常见配置
1、显示服务器版本信息
2、修改监听的IP和Port
3、持久连接
4、MPM(Multi-Processing Module)多路处理模块
5、DSO:Dynamic Shared Object
6、定义'Main' server的文档页面路径
7、定义站点主页面
8、站点访问控制常见机制
9、<Directory>中“基于源地址”实现访问控制
10、日志设定
11、设定默认字符集
12、定义路径别名
13、基于用户的访问控制
14、虚拟主机
15、status页面
2 httpd配置文件的组成
主要是由三部分组成,全局配置,主服务器配置和虚拟主机配置
.# grep "Section"/etc/httpd/conf/httpd.conf
### Section 1: Global Environment
### Section 2: 'Main' serverconfiguration
### Section 3: Virtual Hosts,一个主机建立多个网站,要用到这个配置,2.2版本默认不支持,需要手动加
.配置格式:directivevalue
配置格式:指令值
directive:不区分字符大小写
value:为路径时,是否区分大小写,取决于文件系统
3 Httpd 2.2常见配置
3.1、显示服务器版本信息
格式如下
ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full
显示其他信息,可以查看帮助文档的ServerTokens,配置相应头部,影响的是回应的服务包
如果不配置这行,默认是ServerTokens full
此设置适用于整个服务器,并且无法在虚拟主机by-virtualhostbasis上启用或禁用此设置。
2.0.44版本后,该指令还控制由ServerSignaturedirective提供的信息。
建议配置成ServerTokensprod,比较安全 相关配置和结果如下
ServerTokens Prod[uctOnly] #Server:Apache ServerTokens Major #Server: Apache/2 ServerTokens Minor #Server: Apache/2.0 ServerTokens Min[imal] #Server: Apache/2.0.41 ServerTokens OS #Server: Apache/2.0.41 (Unix) ServerTokens Full (or not specified) #Server:Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2
3.2、修改监听的IP和Port
Listen [IP:]PORT
(1)省略IP表示为0.0.0.0;
listen80是指监听所有ip的80端口,可以指定对应和对外的访问权限,大小写不敏感
改配置为192.168.32.61 8080。这样就只能监听在192.168.32.61的8080端口,默认的80端口就不能访问了
(2) Listen指令至少一个,可重复出现多次
说明不能缺省,至少有一项。重启服务会影响现在的连接。所有能用reload实现的尽量不要用重启操作
Listen 80 Listen 8080
服务器可以同时监听多个ip的不同端口
配置listen 80的基础上添加配置listen
192.168.32.61 8080,同时监听192.168.23.106的8080端口和所有ip的80端口
(3)修改监听socket,重启服务进程方可生效.怎么修改?
3.3、持久连接
指建立连接后每次接收多个资源的请求,如果只接收一个资源的请求,就不是持久连接
Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成,默认关闭持久连接
断开条件:数量限制:100
时间限制:httpd-2.2以秒为单位,httpd-2.4支持毫秒级
副作用:对并发访问量较大的服务器,持久连接功能会使用有些请求得不到响应
折衷:使用较短的持久连接时间
设置:KeepAlive On|Off
如果注释这行,默认是on
KeepAliveTimeout 15
以秒为单位,默认是15秒
MaxKeepAliveRequests 100
这里是指请求数
测试:telnetWEB_SERVER_IP PORT
GET /URL HTTP/1.1 Host: WEB_SERVER_IP(这里要写对方的域名,冒号后面要要有空格) Host这行回车后后还要多一个回车(产生一个空行)
这样才能得到正确的结果,这是http的请求报文语法决定的。
这里是通过GET /index.heml http/1.1来构造数据包报文,服务器配置KeepAlive
off则一个连接是访问一个资源,访问完成后端口,例子如下
开启KeepAlive on就可以一次连接多次请求,连接在超时时间内或者请求此时内,不会断开
3.4、MPM(Multi-Processing Module)多路处理模块
三种服务器的工作模式,默认是用prefork这个
httpd -l(字母l)可以查看到当前正在用的模块
/etc/sysconfig/httpd配置里的这行HTTPD=/usr/sbin/httpd.worker配置决定了用哪个模块,默认是用prefork
httpd-2.2不支持同时编译多个模块,所以只能编译时选定一个;rpm安装的包提供三个二进制程序文件,分别用于实现对不同MPM机制的支持
重启后确认方法:ps aux | grep httpd查看当前的进程
curl -I 192.168.32.61结果Content-Type是响应报头,根据文档里的内容,模数头部来进行判断类型
ab命令用来测试性能,该命令在httpd这个包提供
ab -c 10 -n 100 http://192.168.32.63/
表示总共发了100个请求,每一次的并发数是10个请求,即100个请求仅仅发送了10次就完成了
-c是并发数,一次执行的多个请求数。 默认是一次一个请求。
执行命令ulimit -a查看本机的并发连接数open files
执行命令ulimit -n 2048(要调整的并发数),修改本机的并发数open files
-n是总共发送多少个请求,执行基准测试会话的请求数。 默认情况是仅仅形成单一请求,通常会导致非代表性的基准测试结果。
.查看模块列表
httpd-l:查看静态编译的模块
httpd–M :查看加载的模块,静态编译及动态装载的模块
.动态模块加载:不需重启即生效
.动态模块路径:/usr/lib64/httpd/modules/
.更换使用的httpd程序,即更改MPM模式:
vim /etc/sysconfig/httpd HTTPD=/usr/sbin/httpd.worker
重启服务生效
pstree -p|grep httpd查看进程和线程
.Httpd2.4与2.2切换worker不同
以动态模块方式提供
httpd -M |grep mpm #查看是否加载模块了
pstree -p|grep httpd查看进程和线程
vim /etc/httpd/conf.modules.d/00-mpm.conf LoadModule mpm_worker_module modules/mod_mpm_worker.so
重启服务生效。如果重启时报错,可能是php模块的问题,暂时未解决。
prefork的默认配置:
.prefork的默认配置: <IfModule prefork.c> StartServers 8 MinSpareServers 5 MaxSpareServers 20 ServerLimit 256 最多进程数,最大20000 MaxClients 256 最大并发 MaxRequestsPerChild 4000 子进程最多能处理的请求数量。在处理MaxRequestsPerChild个请求之后,子进程将会被父进程终止,该子进程会被杀掉,这时候子进程占用的内存就会释放(为0时永远不释放) </IfModule> .worker的默认配置: <IfModule worker.c> StartServers 4 MaxClients 300 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 无限制 </IfModule>
3.5、DSO:Dynamic SharedObject
加载动态模块配置
/etc/httpd/conf/httpd.conf
配置指定实现模块加载格式:
LoadModule <mod_name> <mod_path>
LoadModule 名称 模块路径(模块文件路径是相对于路径相对于ServerRoot,即默认为/etc/httpd/)
例子
LoadModule version_module modules/mod_version.so LoadModule auth_basic_module modules/mod_auth_basic.so
3.6、定义'Main'
server的文档页面路径
DocumentRoot“/path”
文档路径映射:
DocumentRoot指向的路径为URL路径的起始位置
示例:
DocumentRoot "/app/data“ http://HOST:PORT/test/index.html-->/app/data/test/index.html
注意:SELinux和iptables的状态可能会影响访问
3.7、定义站点主页面
定义默认主页面的查看内容
DirectoryIndex index.html index.html.var
当网页出错的时候,默认的错误弹出的页面是定义在/etc/httpd/conf.d/welcome.conf这个文件下的,
如网站没有默认的主页时,默认/etc/httpd/conf.d/welcome.conf这个文件是将错误页面跳转到/var/www/error/noindex.html
noindex.html这个文件就是centOS上默认显示的测试页面,如果将/etc/httpd/conf.d/welcome.conf的内容修改,可以将没有首页调整到指定的页面,而不一定是noindex.html这个页面。
修改这两个文件可以将默认的错误信息进行修改
3.8、站点访问控制常见机制
对用户访问某些页面的时候加以控制,具体的例子看第9项
可基于两种机制指明对哪些资源进行何种访问控制
访问控制机制有两种:客户端来源地址,用户账号
注意,有match的关键字,如filesmatch,locationmatch都是基于正则表达式匹配的
没有match,如files,location是基于通配符进行匹配
控制各种资源的访问,
.文件系统路径:
.文件系统路径: <Directory "/path"> ... </Directory> Directory针对的是系统里的文件夹进行控制 <File “/path/file”> ... </File> <FileMatch "PATTERN"> ... </FileMatch> FileMatch表示正则表达式匹配的文件名称来控制 .URL路径: 基于url进行控制 <Location "url路径"> ... </Location> <LocationMatch ""> ... </LocationMatch>
.示例:
<FilesMatch "\.(gif|jpe?g|png)$"> 基于正则表达式匹配 <Files “?at.*”> 基于通配符匹配 <Location /status> : /status表示的是路径,表示为 /www/var/html/status Location后面跟着url路径表示 http://www.sunny.com/status <LocationMatch "/(extra|special)/data"> <Files "?at.*">
3.9、中“基于源地址”实现访问控制
.(1) Options:后跟1个或多个以空白字符分隔的选项列表
在选项前的+,-表示增加或删除指定选项
常见选项:
Indexes:指明的URL路径下不存在与定义的主页面资源相符的资源文件时,返回索引列表给用户
表示当前目录下没有index的时候,是否显示文件夹的目录,为了安全考虑,这一项一般是要禁止,即设置为-indexes
FollowSymLinks:允许访问符号链接文件所指向的源文件,如在对应目录下有一个软链接,
该软链接默认情况下是支持FollowSymLinks
例子:
ln -s /etc/fstab a.html
这样该目录下有a.html指向/etc/fstab这个文件,默认是支持访问的,但是如果配置-FollowSymLinks,则访问a.html就的得不到结果
None:全部禁用,为了安全,一般设置为none
All:全部允许,包括indexes
.示例:
<Directory /web/docs> Options Indexes FollowSymLinks </Directory> <Directory /web/docs/spec> Options FollowSymLinks </Directory> <Directory /web/docs> Options Indexes FollowSymLinks </Directory> <Directory /web/docs/spec> Options +includes -indexes </Directory>
.(2) AllowOverride
与访问控制相关的哪些指令可以放在指定目录下的.htaccess(由AccessFileName指定)文件中,覆盖之前的配置指令。在配置文件里,配置AllowOverride...指定对应目录允许用户可以通过.htaccess文件的配置覆盖配置文件的权限,即使得.htaccess的权限比配置文件高,其实时相关于给.htaccess文件授权,指定对应目录的.htaccess能做什么事。
在要设置权限对应的目录下新建.htaccess,然后将配置命令写入.htaccess这个下面
.htaccess文件,注意这个文件的写法, 不需要再指定...,因为这个文件就是用来专门控制某个文件夹下的相关权限,必须是放在对应目录下,为了安全,建议将.htaccess这个文件的权限设置为600,chmod 600 .htaccess。同时,设置acl使得apache这个账号可以访问该权限setfacl -mu:apache:r .htaccess
例子如下
例子一
options indexes#控制目录能否有索引
例子二
在对应目录下写入.htaccess文件
authtype basic authname "sunny admin" authuserfile "/etc/httpd/conf.d/httpusers" require valid-user
以上语句控制了该目录具有basic认证
AllowOverride All:所有指令都有效,但是只能写在语句里面有效
http主站点默认是不允许用户访问.htaccess,因为这个是配置文件里写入了如下的语句
<Files ~ "^\.ht"> Order allow,deny Deny from all Satisfy All </Files>
AllowOverride None #效果是导致了.htaccess文件无效
AllowOverride AuthConfig Indexes除了AuthConfig和Indexes的其它指令都无法覆盖
父目录的设置会影响子目录的设置,本来这里子目录不允许索引,但是父目录允许了,导致子目录也允许索引
.(3) order和allow、deny
order:定义生效次序;写在后面的表示默认法则,写在后面的优先级高,如allow,deny,deny的优先级比allow高。注意主配置文件上有对家目录的设置
Order allow,deny Order deny,allow Allow from Deny from 来源地址:IP 网络: 根据地址进行判断,地址有如下的写法 172.16 172.16.0.0 172.16.0.0/16 172.16.0.0/255.255.0.0
.示例:
<files "*.txt">
如果是txt后缀的文件,进行设置
order deny,allow deny from 172.16. 100.100 allow from 172.16 此时172.16.100.100是被allow的
</files> <files "*.txt"> order allow,deny deny from 172.16.100.100 allow from 172.16 此时172.16.100.100是被deny的
</files>
拒绝所有人访问以.conf结束的文件。
这种规则不建议加,因为通配符做匹配时会消耗服务器的资源,降低了性能
3.10、日志设定
日志类型:
访问日志:访问的日志
错误日志:报错的日志
访问日志:
配置文件里定义了访问日志的路径和格式,访问日志路径/etc/httpd/logs/access_log
错误日志:
报错的日志,
ErrorLog logs/error_log;即路径是/etc/httpd/logs/error_log
Log Levelwarn
loglevel可选值:
debug, info, notice, warn,error,crit,alert, emerg
.访问日志:
.定义日志格式:LogFormat format strings
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\"\"%{User-Agent}i\"" combined
.使用日志格式:
CustomLog logs/access_log combined
该语句定义了日志的路径,以及日志的格式,这个格式应用了模板combined,这个combined的格式是可以调整的,也是定义在配置文件中,日志的参数可以见官方的文档
参考帮助:
http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
或者是安装日志手册,yum -y install httpd-manual,然后见 http://http-server-ip/manual/mod/mod_log_config.html如http://172.18.50.61/manual/mod/mod_log_config.html
.%h 客户端IP地址
.%l 远程用户,启用mod_ident才有效,通常为减号“-”
.%u 验证(basic,digest)远程用户,非登录访问时,为一个减号“-”
.%t 服务器收到请求时的时间
.%r First line of request,即表示请求报文的首行;记录了此次请求的“方法”,“URL”以及协议版本
.%>s 响应状态码
.%b 响应报文的大小,单位是字节;不包括响应报文http首部
.%{Referer}i 请求报文中首部“referer”的值;即从哪个页面中的超链接跳转至当前页面的。具体指上一次从哪个网站跳转过来的,即有做链接的的那个网站叫referer,这个字段可以在请求的报头里看到。跳转后的那个页面叫做infer <a href=http://172.18.50.75/a.txt>Welcome to sunnyhome</a>这个语句,网页上点击Welcome to sunny home就会跳转到http://172.18.50.75/a.txt这个文件,其中,Welcome to sunny home所在的页面就是referer。http://172.18.50.75/a.txt这个页面就叫infer
.%{User-Agent}i 请求报文中首部“User-Agent”的值;即发出请求的应用程序,一般指浏览器的类型,报头类型的一种
3.11、设定默认字符集
配置语句:AddDefault Charset UTF-8
UTF-8各国语言都支持,包括支持中文字符
中文字符集:GBK, GB2312, GB18030
3.12、定义路径别名
格式:Alias /URL/ "/PATH/"
表示访问URL的时候跳转到PATH来
注意这里的/url是指http的url,如配置为/bbs,表示网站 http://172.18.50.75/bbs
/PATH/ 是指要调整到本地的那个具体的路径下,如配置为/var/www/html/os,表示当用户访问http://172.18.50.75/bbs的时候会直接跳转到路径/var/www/html/os来
3.13、基于用户的访问控制
.认证质询:WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户端提供账号和密码
.认证:Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过时,则服务器发送响应的资源
.认证方式两种:
basic:明文,默认走http协议,输入用户名和密码来验证
digest:消息摘要认证,兼容性差
.安全域:需要用户认证后方能访问的路径;应该通过名称对其进行标识,以便于告知用户认证的原因
.用户的账号和密码
虚拟账号:仅用于访问某服务时用到的认证标识,这里用的账号是虚拟账号,给服务用的,不是登录操作系统的账号
存储:账号的存储路径,文本文件,SQL数据库,ldap目录存储,nis等
.basic认证配置示例:
(1) 定义安全域
<Directory “/path"> Options None AllowOverride None AuthType Basic AuthName "String“ #string是提示字符串,类似欢迎词 AuthUserFile"/PATH/HTTPD_USER_PASSWD_FILE" #/PATH/HTTPD_USER_PASSWD_FILE虚拟账号放在的路径,通过工具来生成这个文件,工具是htpasswd Requireuser username1 username2 ... #Require user表示只有/PATH/HTTPD_USER_PASSWD_FILE里特定的几个账号才能访问,不是/PATH/HTTPD_USER_PASSWD_FILE所有账号都能访问。如果这句配置改为Require valid-user,那么/PATH/HTTPD_USER_PASSWD_FILE的所有用户都能访问 </Directory>
以上的配置是写如配置文件,例子如下
vim /etc/httpd/conf.d/test.conf <directory /var/www/html/secret> authtype basic authname "sunny auth" authuserfile "/etc/httpd/conf.d/httpusers" require user httpuser </directory>
然后重启httpd服务器就可以启动,以上配置表示要访问/var/www/html/secret这个目录,需要通过基于basic的认证,允许的用户是在/etc/httpd/conf.d/httpusers这个文件下,但是只有该文件里的用户httpuser才能访问
(2)提供账号和密码存储(文本文件)
使用专用命令完成此类文件的创建及用户管理
htpasswd [options] /PATH/HTTPD_PASSWD_FILE username
-c:自动创建文件,该选项仅在该文件不存在时使用,如第一次创建文件,文件的路径没有指定,用户可以自己指定,文件以及存在的情况下不能使用-c选项,否则之前的账号密码信息会被覆盖
-m:md5格式加密,默认是md5算法,建议加上-m选项
-s: sha格式加密
-D:删除指定用户
.基于组账号进行认证
注意,这里和基于用户的认证基本一样,要求要通过htpasswd生成指定的用户,同时,多了两个配置,要生成一个组文件,将指定的用户加到对应的组里,同时还要再配置文件里指定哪些组可以访问。以下定义安全域事一种方法,同时也可以指定.htaccess文件来指定权限,再配置文件里将对应目录增加allowoverride的配置即可。
方法一(1)定义安全域
<Directory “/path"> AuthType Basic AuthName "String“ AuthUserFile "/PATH/HTTPD_USER_PASSWD_FILE" AuthGroupFile "/PATH/HTTPD_GROUP_FILE" Require group grpname1 grpname2 ... </Directory>
例子
<directory /var/www/html/admin> authtype basic authname "sunny admin" authuserfile "/etc/httpd/conf.d/httpusers" authgroupfile "/etc/httpd/conf.d/httpgrp" require group grp1grp2 </directory>
.(2) 创建用户账号和组账号文件;
这个是虚拟组,和虚拟用户一样的概念,不是系统的组或用户
基于组的验证,实现要准备好一个文件
/PATH/HTTPD_GROUP_FILE 组文件:每一行定义一个组
GRP_NAME: username1 username2 ...
例子
vim /etc/httpd/conf.d/httpgrp grp1:http sunny http5 grp2:httpuser http6
重启服务即可
方法二,再目录/var/www/html/admin下创建一个.htaccess文件,内容如下
authtype basic authname "sunny admin" authuserfile "/etc/httpd/conf.d/httpusers" authgroupfile "/etc/httpd/conf.d/httpgrp" require group grp1grp2
然后在子配置文件下添加子配置内容,写入如下的内容,允许目录/var/www/html/admin可以
allowoverride authconfig <directory/var/www/html/admin> allowoverrideauthconfig </directory>
然后再添加组和用户文件 /etc/httpd/conf.d/httpusers 和 /etc/httpd/conf.d/httpgrp,重启服务即可
允许特定的机器访问特定目录,以下例子只有61这台机器可以访问。这样设置后,可以运行在特定机器上的特定用户才能访问了,这是且关系。必须是172.18.50.61且用户是再basic用户认证的用户才能访问
<directory/var/www/html/admin> order deny,allow deny from all allow from 172.18.50.61 allowoverride authconfig </directory>
.Satisfy ALL|Any
ALL 客户机IP和用户验证都需要通过才可以
Any客户机IP和用户验证,有一个满足即可
如果在以下配置加上SatisfyAny 是两个验证二选一就可以,或的关系,来自172.18.50.61的访问或者通过了basic验证的用户都可以访问
<directory /var/www/html/admin> order deny,allow deny from all allow from 172.18.50.61 allowoverride authconfig satisfy any </directory>
3.14、虚拟主机
.站点标识:socket
一个主机上有多个主页,就叫虚拟主机,由IP+端口组合来实现,可以通过customlog分别记录不同主机的log
有三种实现方案:
基于ip:
为每个虚拟主机准备至少一个ip地址,IP不同,但端口均为默认端口
在子配置文件写写配置,三个不同的ip访问不同的主站点,这些站点是虚拟主站点。如果站点访问量不大,可以在一个主机上建立多个虚拟主站点,减少物理主机的数量,节约成本。整个仅适合企业内部来用,因为是需要用ip来访问。
这里如果不需要默认的主站点,可以把主站点的网页配置注释。默认主站点和虚拟站点可以共存
基于port:
为每个虚拟主机使用至少一个独立的port,IP相同,但端口不同
基于FQDN:
为每个虚拟主机使用至少一个FQDN,基于名称,FQDN不同;
基于FQDN,要启用dns服务,如果不启用dns服务器,可以在对应服务器上/etc/hosts文件把对应的ip 和url 添加上
基于名称的虚拟主机,要把配置文件中的NameVirtalHost*:80这句话启用
基于名称的使用,主站点默认是会被禁止的,此时返回的结果是第一个虚拟主站点,(根据配置文件中虚拟主机的排序来决定,排在第一位的是默认主站点)这个和基于ip的使用不一样。
.注意:基于FQDN的虚拟机不要与main主机混用;因此,要使用虚拟主机,先禁用main主机,即注释中心主机的DocumentRoot指令即可
测试的时候,把客户机的dns指向dns服务器进行测试
.其它可用指令:
ServerAlias:虚拟主机的别名;可多次使用 ErrorLog:错误日志 CustomLog:访问日志 <Directory “/path"> </Directory> Alias
例子
.基于IP的虚拟主机示例
实验中,我们给eth0添加三个ip
ip address add 192.168.32.10/24 deveth0 ipaddress add 192.168.32.20/24 dev eth0 ip address add 192.168.32.30/24 deveth0
注意,删掉网卡上的一个子ip,语句如下。或者重启网络服务,会把所有的子ip都删掉
ip address del 192.168.32.30/24 deveth0
然后添加子配置文件
vim/etc/httpd/conf.d/test.conf <virtualhost 192.168.32.10:80> Documentroot "/var/www/html/web1" </virtualhost> <virtualhost 192.168.32.20:80> Documentroot "/var/www/html/web2" </virtualhost> <virtualhost 192.168.32.30:80> Documentroot "/var/www/html/web3" </virtualhost>
重启http服务,注意,重启会比较慢,进行测试
.基于端口的虚拟主机
可和基于IP的虚拟主机混和使用
这里是同一个ip上不同的端口,得到不一样的网页
listen 888 listen 808 listen 8080 <virtualhost 192.168.32.10:888> Documentroot "/var/www/html/web1" </virtualhost> <virtualhost 192.168.32.10:808> Documentroot "/var/www/html/web2" </virtualhost> <virtualhost 192.168.32.10:8080> Documentroot "/var/www/html/web3" </virtualhost>
.基于FQDN的虚拟主机:
a 注释主配置文件的Documentroot
vim /etc/httpd/conf/httpd.conf #DocumentRoot "/var/www/html"
b 再dns上配置这三个主站点的dns解析
比如dns服务器是172.18.50.61
再该服务器上配置如下的配置
vim/etc/named.rfc1912.zones zone "a.com" IN { type master; file"a.com.zone"; }; vim /var/named/a.com.zone $TTL 1D @ IN SOA masterdns admin.a.com. ( 2017092113 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS masterdns masterdns A 192.168.32.61 www A 192.168.32.63
www.b.com和 www.c.com 上同样定义区域和dns解析文件
c 编写子配置文件
以下例子把log功能也启用了,分别记录不同虚拟主机的log
vim/etc/httpd/conf.d/test.conf NameVirtualHost*:80 #注意httpd2.4不需要此指令 <virtualhost *:80> servername www.a.com Documentroot "/var/www/html/web1" customlog logs/www.a.com-access_log combined </virtualhost> <virtualhost *:80> servername www.b.com Documentroot "/var/www/html/web2" customlog logs/www.b.com-access_log combined </virtualhost> <virtualhost *:80> servername www.c.com Documentroot "/var/www/html/web3" customlog logs/www.c.com-access_log combined </virtualhost>
重启http服务,再客户端修改dns为172.18.50.61,进行测试即可
3. 15、status页面
/server-status这个是虚拟目录,用这个目录来显示当前站点的信息
监控web服务器的工作状态,需要加载模块status_module,源码编译需要编译该模块才能使用这个功能
源码编译的时候,要把status_module模块加进去,配置中语句如下
LoadModule status_module modules/mod_status.so
基于安全,一般要加权限设置,如配置只允许以下的网段访问,allow from 192.168.32
Location /server-status是可以自己随便指定,建议改掉这个名称,更加安全。但是SetHandler 后的server-status是固定的,不能更改,模块的名称
通过server-status这个网页可以作为判断服务器状态的网页,如果该页面可以打开,说明当前服务器工作状态正常,curl http://172.18.50.63/server-status,然后echo $?如果返回值是0.说明当前网页正常
加上 ExtendedStatus On这个配置使得该网页显示更加详细的信息
例子:
vim /etc/httpd/conf.d/status.conf <Location/sunny-server> SetHandler server-status Order deny,allow Deny from all Allow from 172.18 </Location> ExtendedStatus On
4 总结
本文主要是介绍2http .2相关的常用配置,后续如果工作中有涉及,且认为是常用的,将会继续做更新
转载于:https://blog.51cto.com/ghbsunny/1970424