一、相关web配置文件
/home/was/was61/HTTPServer/bin
./apachetl start
/home/was/was61/HTTPServer/conf/httpd.conf
/home/was/was61/HTTPServer/Plugins/config/webserver1/plugin-cfg.xml
二、httpd的配置文件说明
more /home/was/was61/HTTPServer/conf/httpd.conf
2.1、持久连接
PidFile logs/httpd.pid
Timeout 150
KeepAlive On
MaxKeepAliveRequests 1000 //持久连接最大请求数
KeepAliveTimeout 10 --> 5 //超时时间
2.2、MPM参数
多道处理模块MPM,查看系统默认启用的模块
# httpd –l
Compiled in modules:
core.c
prefork.c #默认启用prefork模块
httpd_core.c
mod_so.c
生产上
[WYWEB01]:/home/was/was61/HTTPServer/bin>./apachectl -l
Compiled in modules:
core.c
worker.c
http_core.c
mod_suexec.c
mod_so.c
配置模块信息
<IfModule worker.c>
ThreadLimit 100 --> 200
ServerLimit 120 --> 20/45
StartServers 10
MaxClients 12000 --> 4000/9000
MinSpareThreads 100 --> 400
MaxSpareThreads 300 --> 600
ThreadsPerChild 100 --> 200
MaxRequestsPerChild 0
</IfModule>
# ThreadLimit: maximum setting of ThreadsPerChild
每个子进程建立的常驻的执行线程数的最大值,即ThreadsPerChild的最大值
# ServerLimit: maximum setting of StartServers
服务器启动时建立的子进程数的最大值,即StartServers的最大值
# StartServers: initial number of server processes to start
服务器启动时建立的子进程数
# MaxClients: maximum number of simultaneous client connections
允许同时伺服的最大接入请求数量(最大线程数量),ServerLimit*ThreadsPerChild。要增加MaxClients,必须增加ServerLimit的值。
# MinSpareThreads: minimum number of worker threads which are keptspare
最小空闲线程数,这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程
# MaxSpareThreads: maximum number of worker threads which are keptspare
最大空闲线程数,这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。 MaxSpareThreads的取值范围是有限制的。Apache将按照如下限制自动修正你设置的值:worker要求其大于等于 MinSpareThreads加上ThreadsPerChild的和
# ThreadsPerChild: constant number of worker threads in each serverprocess
每个子进程建立的常驻的执行线程数
# MaxRequestsPerChild: maximum number of requests a server processserves
每个子进程在生命周期内所能够服务的最多请求的个数(0表示不做限定),到达MaxRequestsPerChild的限制后,子进程将会结束
<IfModule worker.c>
ThreadLimit 200
ServerLimit 45
StartServers 10
MaxClients 9000
MinSpareThreads 400
MaxSpareThreads 600
ThreadsPerChild 200
MaxRequestsPerChild 0
</IfModule>
2.3、配置监听端口
进入/home/was/was61/HTTPServer/conf目录,用VI编辑httpd.conf文件,增加监听端口号,格式为“Listen 端口号”。注:端口号需要网络组事先分配好,并且不能重复。
2.4、DSO机制装载的模块
显示:# httpd -DDUMP_MODULES
LoadModule Module_Name/path/to/Module_File
可以使用相对路径和绝对路径;相对路径则对于ServerRoot所定义的未知而言;
修改了需要重启服务service httpdrestart
httpd -M #可以查看系统所有装载模块
[WYWEB01]:/home/was/was61/HTTPServer/bin>./apachectl -D DUMP_MODULES
[WYWEB01]:/home/was/was61/HTTPServer/bin>./apachectl –M
2.5、指定站点根目录
DocumentRoot"/path/to/somewhere"
生产上
DocumentRoot "/home/was/was61/HTTPServer/htdocs"
2.6、站点路径访问控制
基于本地文件系统路径
<Directory"/path/to/somewhere">
</Directory>
eg:
<Directory "/home/was/was61/HTTPServer/icons">
Options none
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory "/home/was/was61/HTTPServer/htdocs">
Options none
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory "/home/was/was61/HTTPServer/htdocs/default">
Options none
AllowOverride None
Order allow,deny
Allow from all
</Directory>
基于URL访问路径做访问控制
<Location"/path/to/URL">
</Location>
eg:
#<Location /server-info>
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from .example.com
#</Location>
2.7、于Directory中可用的访问控制
(1) Options
Indexes: 当访问的路径下无默认的主页面,将所有资源以列表形式呈现给用户;危险,慎用;
FollowSymlinks: 跳跃符号链接
(2) AllowOverride
支持在每个页面目录下创建.htaccess用于实现对此目录中资源访问时的访问控制功能。
2.8、基于IP做访问控制
Order allow,deny
Deny from172.16.100.17
Allow from 172.16.0.0/16
2.9、定义默认的主页面
DirectoryIndex
from后面能接受的地址格式:
IP, Network Address
网络地址格式较为灵活:
172.16
172.16.0.0
172.16.0.0/16
172.16.0.0/255.255.0.0
2.10、配置日志功能
ErrorLog "/path/to/error_log"
LogLevel{debug|info|notice|warn|error|crit|alert|emerg}
LogFormat
CustomLog "/path/to/access_log" LogFormat_Name
%h: 客户端地址
%l: 远程登录名,通常为-
%u: 认证时输入用户名,没有认证时为-
%t: 服务器收到用户请求时的时间
%r:请求报名的起始行
%>s: 响应状态码
%b: 响应报文的长度,单位是字节
%{HEADER_NAME}i: 记录指定首部对应的值
eg:
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 "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
ErrorLog "|/home/was/was61/HTTPServer/bin/rotatelogs/home/was/was61/HTTPServer/logs/error_log.%y%m%d%H 86400 +480"
TransferLog "|/home/was/was61/HTTPServer/bin/rotatelogs/home/was/was61/HTTPServer/logs/access_log.%y%m%d%H 86400 +480"
2.11、路径别名
站点根目录:/www/html
http://www.magedu.com/images/logo/new.gif
此文件位置:/www/html/images/logo/new.gif
实现URL路径的映射,从而所访问的资源不再依赖于站点根目录;
Alias /URL/"/path/to/somewhere/"
eg:Alias /icons/"/home/was/was61/HTTPServer/icons/"
2.12、CGI脚本
CGI脚本路径别名
CGI动态网关接口
/var/www/cgi-bin/
http://server/cgi-bin/
bash写CGI脚本:
所有文本都使用命令输出:echo, printf, cat
执行程序:命令引用
Content-Type:text/html
<pre>
</pre>
FastCGI: 协议
2.13、基于用户访问控制
用户认证:
基本认证: Basic
摘要认证:digest
虚拟用户:仅用于访问某服务或获取某资源的凭证;
文本文件:.htpasswd
SQL数据库
dbm: 数据库引擎,提供API
ldap: 轻量级目录访问协议
authenticationprovider: 账号和密码的存储机制;
authn
authorization provider:授权
案例:基于文件做访问控制
(1) 基于用户进行认证
<Directory"/var/www/html/admin">
Options none
AllowOverride AuthConfig
AuthType Basic
AuthName "Admin Area."
#AuthBasicProvider file
AuthUserFile /etc/httpd/conf/.htpasswd
Require valid-user
</Directory>
Requirevalid-user: 文件中所有用户均可访问
Require userUSERNAME, ...
(2) 提供认证文件
htpasswd
-c: 如果此文件事先不存在,则创建;注意,只能在创建第一个用户时使用;
-m:以md5的格式编码存储用户的密码信息
-D:删除指定用户
(3) 组认证
<Directory"/var/www/html/admin">
Options none
AllowOverride AuthConfig
AuthType Basic
AuthName "Admin Area."
#AuthBasicProvider file
AuthUserFile /etc/httpd/conf/.htpasswd
AuthGroupFile /etc/httpd/conf/.htgroup
Require group GROUP_NAME
</Directory>
组文件:
组名:user1 user2 user3
2.14、虚拟主机
虚拟主机:使用不同访问路径
虚拟主机是使用特殊的软硬件技术,把一台真实的物理电脑主机分割成多个的逻辑单元,每个单元都没有物理实体,但是每一个物理单元都能像真实的物理主机一样在网络上工作,具有单独的IP地址(或共享的IP地址)以及完整的Internet服务器功能。
基于端口
基于IP
基于主机名
(1) 使用虚拟的前提:取消主服务器
注释主服务器的站点根路径指定:DocumentRoot
(2) 定义虚拟主机
NameVirtualHostIP:PORT //基于主机名
<VirtualHostIP:PORT>
ServerName
DocumentRoot
ServerAlias
ErrorLog
CustomLog
</VirtualHost>
配置文件语法检查:
httpd -t
service httpdconfigtest
配置示例:
<VirtualHost172.16.100.7:80>
ServerName www.mageedu.com
DocumentRoot "/web/hosta"
</VirtualHost>
<VirtualHost172.16.100.8:80>
ServerName www.mageedu.com
DocumentRoot "/web/hostb"
</VirtualHost>
<VirtualHost172.16.100.8:8080>
ServerName www.mageedu.com
DocumentRoot "/web/hostc"
</VirtualHost>
测试:elinks
-dump: 获取到页面数据后直接退出进程;
eg: elinks [-dump] www.mageedu.com
eg:
用VI编辑httpd.conf文件,增加虚拟主机,格式如下:
<VirtualHost *:端口号>
DocumentRoot/home/was/was61/HTTPServer/htdocs/成员行主页目录/
</VirtualHost>
注:端口号必须和上面的监听端口号一致,成员行主页目录下须有相关主页内容。
<VirtualHost *:8101>
DocumentRoot
/home/was/was61/HTTPServer/htdocs/tianjinbh/
RewriteEngine on
RewriteCond %{REQUEST_METHOD}^TRACE
RewriteRule .* -[F]
RewriteCond%{REQUEST_METHOD} ^TRACK
RewriteRule .* -[F]
RewriteCond%{REQUEST_METHOD} ^OPTIONS
RewriteRule .* -[F]
</VirtualHost>