# vim /etc/httpd/conf/httpd.conf
ServerTokens OS --向客户端提供一些服务器和信息
# curl -I http://192.168.1.100
serverRoot "/etc/httpd" --存放配置文件一主目录
PidFile run/httpd.pid --pid文件
Timeout 120 --连接超时时间
KeepAlive Off --一般是短时间下载文件比较多的网站 在ON的时候 一次连接多次请求
MaxKeepAliveRequests 100
KeepAliveTimeout 15
keepalive参数修改小测试
off 的情况, 别人刷新你的一个页面
netstat -nt |grep :80 可以看到一个IP有多次连接
或者使用netstat -nt |grep :80 |awk -F: '{print $8}' |sort |uniq -c
命令来查看
on的
情况, 别人刷新页面
netstat -nt |grep :80 可以看到一个IP只有一次连接(15秒后再刷新会产生新连接)
两分钟左右不刷新,TIME_WAIT连接断开
# cd /usr/sbin/
# mv httpd httpd.prefork
# mv httpd.worker httpd
# /etc/init.d/httpd restart
# httpd -l
dynamic shared object 动态共享模块
Include conf.d/*.conf --表示conf.d/下的*.conf配置文件生效
User apache
Group apache --以什么身份运行
ServerAdmin root@localhost --管理邮箱
DocumentRoot "/var/www/html" --网站家目录
DirectoryIndex index.html index.html.var --定义主页文件
AccessFileName .htaccess --网页加密
ErrorLog logs/error_log --错误日志
LogLevel warn --日志等级
修改主页类型或者主页名
DirectoryIndex index.php index.html.var
elinks 10.1.1.45 --elinks是一个文本模式的web浏览器
DefaultLanguage zh-CN --默认语言集打开注释,并改为简体中文zh-CN
LanguagePriority zh-CN en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-TW --语言优先级,把zh-CN写到最前
AddDefaultCharset UTF-8 --字符编码,如果中文的话,有可能需要改为gb2312或者gbk,因你的网站文件的默认编码而异
--扩展:
windows默认gb2312
linux默认utf-8
windows里文件内容的结束符和linux下不一样
所以把windows的文件拿到linux写脚本进行字符处理会出现问题
解决方法:
dos2unix
unix2dos
indexes --指当找不到默认的主页文件时,就把此目录下的文件或者目录以列表形式显示出来
FollowSymlinks --允许符号链接,扩展了网站根目录,允许链接到网站根目录以外
allowoverride none --可以把none改为all来允许.htaccess控制
order allow,deny --指定的是先允许,后拒绝
allow from all --指定允许所有
把网站的文件修改成目录列表的形式
条件1.
Options Indexes FollowSymLinks --相应目录要有indexes参数
条件2.
没有主页文件
条件3.
符合上面两个条件,就会访问到redhat的欢迎页面
vim /etc/httpd/conf.d/welcome.conf --注释掉这个欢迎页面,或者是删除它
files 容器 --针对文件的控制
<Directory "/www">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
<files "1"> --表示35这个客户端不能访问/www/1,而且如果要控制/www/bbs/1这个文件,不能在这里写成<files "bbs/1">,需要在/www/bbs这个目录的directory容器里再嵌套files标签来控制
order allow,deny
allow from all
deny from 10.1.1.35
</files>
</Directory>
网站下所有目录(包括子目录)以ule开头的文件都不能被访问
<Files ~ "^ule">
Order allow,deny
Deny from all
</Files>
网站下所有目录(包括子目录)以.txt结尾的文件都不能被访问
<Files ~ "\.txt$">
Order allow,deny
Deny from all
</Files>
<Location "/bbs">
order allow,deny
deny from all
</Location>
--这是对http://IP/bbs 这种URL来进行权限控制
--location容器有时候和directory有可能重合,并且配置有冲突,(如果一个是允许,一个是拒绝,无论是location拒绝,还是directory拒绝,最终结果都是拒绝的)下面
<Location "/bbs">
order allow,deny
deny from all
</Location>
<Directory "/www/bbs">
order allow,deny
allow from all
</Directory>
--注意:在rhel6里,有细微变化,location的优先级要高
<Location "/bbs">
order allow,deny
deny from all
</Location>
--这是对http://IP/bbs 这种URL来进行权限控制
--location容器有时候和directory有可能重合,并且配置有冲突,(如果一个是允许,一个是拒绝,无论是location拒绝,还是directory拒绝,最终结果都是拒绝的)下面
<Location "/bbs">
order allow,deny
deny from all
</Location>
<Directory "/www/bbs">
order allow,deny
allow from all
</Directory>
--注意:在rhel6里,有细微变化,location的优先级要高
对mod_status和mod_info这两个DSO配置服务器的信息查看
L
oadModule status_module modules/mod_status.so
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 10.1.1.35
</Location>
LoadModule info_module modules/mod_info.so
<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from 10.1.1.35
</Location>
http://IP/server-status
http://IP/server-info
# vim /www/.htaccess --对哪个目录进行限制,就在哪个目录下建立此文件
authname "please input your username and password! @_@"
authtype basic
authuserfile /etc/httpd/userpasswd
require valid-user
# htpasswd -c /etc/httpd/userpasswd aaa --创建此文件,并加入一个用户,自定义密码,注意此用户与系统普通用户无关
#
htpasswd /etc/httpd/userpasswd bbb --再增加一个用户
第二种做法:
# vim /etc/httpd/conf/httpd.conf
<Directory "/www">
Options Indexes FollowSymLinks
AllowOverride None --none不用改成all
Order allow,deny
Allow from all
authname "please input your username and password! @_@"
authtype basic
authuserfile /etc/httpd/userpasswd
require valid-user --把这四句直接加到这个目录标签里
</Directory>
2,
# htpasswd -c /etc/httpd/userpasswd aaa
3,
# /etc/init.d/httpd restart --重启后,验证,也可以
基于IP的虚拟主机
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www/aaa
ServerName 10.1.1.36
ErrorLog logs/36-error_log
CustomLog logs/36-access_log common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/bbb
ServerName 10.1.1.37
ErrorLog logs/37-error_log
CustomLog logs/37-access_log common
</VirtualHost>
基于端口的虚拟主机
Listen 80 --这一句默认就有,不用再加
Listen 8000
Listen 8080
<VirtualHost *:80>
DocumentRoot /www/aaa
ServerName 10.1.1.36
ErrorLog logs/36-error_log
CustomLog logs/36-access_log common
</VirtualHost>
<VirtualHost *:8000>
DocumentRoot /www/bbb
ServerName 10.1.1.36
ErrorLog logs/37-error_log
CustomLog logs/37-access_log common
</VirtualHost>
基于域名的虚拟主机
--需要DNS的cname记录的支持,或者A记录
aaa.web.com
bbb.web.com
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www/aaa
ServerName aaa.web.com
ErrorLog logs/aaa-error_log
CustomLog logs/aaa-access_log common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/bbb
ServerName bbb.web.com
ErrorLog logs/bbb-error_log
CustomLog logs/bbb-access_log common
</VirtualHost>
使用第三方模块 实现apache限速
share/soft/lamp/apache_source/mod-cband-0.9.7.2.tgz
解压并CD进去进行编译
tar xvf mod-cband-0.9.7.2.tgz -C /usr/src/
cd /usr/src/mod-cband-0.9.7.2/
./configure ;make ;make install
确认/etc/httpd/conf/httpd.conf里是否自动加载了下面这句话
LoadModule cband_module /usr/lib/httpd/modules/mod_cband.so
针对虚拟主机new.cluster.com进行限速
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www/aaa
ServerName news.cluster.com
ErrorLog logs/aaa.com-error_log
CustomLog logs/aaa.com-access_log common
cbandlimit 100M --指网站允许的总的下载流量
cbandperiod 1W --清空时间
cbandspeed 1024 10 30 --当前总带宽,每秒可以同时连接10个,最大的总连接数,1024在这里除以8就是kb每秒的单位
cbandremotespeed 10kb/s 3 3 --针对单一客户端下载速度为10kb/s,每秒可以同时3个连接,最多一个IP生成3个连接
<location /cband-status>
sethandler cband-status --使用http://IP/cband-status访问控制状态
</location>
<location /cband-status-me>
se
thandler cband-status-me ----使用http://IP/cband-status-me访问控制状态
</location>
</VirtualHost>
对apache做每天一次的日志轮转
1,使用logrotate来做
2,自己写脚本
#!/bin/bash
mv /var/log/httpd/access_log /var/log/httpd/access_log.`date -d "-1 days" +%F`.log
touch /var/log/httpd/access_log
kill -HUP `cat /etc/httpd/run/httpd.pid`
把上面脚本放到crontab里0点执行
3.
www.cronolog.org
软件包位置:
ls /share/soft/soft/log/
cronolog-1.6.2.tar.gz cronolog.pdf cronosplit.p
f
解压到任意目录,我这里是/usr/src/
# tar xvf cronolog-1.6.2.tar.gz -C /usr/src
# cd /usr/src/cronolog-1.6.2/
编译安装
# ./configure ;make ;make install
,先注释掉虚拟主机,虚拟主机需要每个都配,为了方便,这里注意掉,使用原来的web服务器配置
vim /etc/httpd/conf/httpd.conf
修改:
CustomLog logs/access_log combined
改成:
CustomLog "|/usr/local/sbin/cronolog /opt/%Y/%m/%d/access_log" combined
--注意格式不要写错
重启apache后,过几秒,或者访问一下apache
就会在/opt下产生了
关于日志合并
# sort -m -k 4 -o newaccess.log access_log access_log1
或者使用awstats,weblizer这样的日志分析软件去做日志合并
ServerTokens OS --向客户端提供一些服务器和信息
# curl -I http://192.168.1.100
serverRoot "/etc/httpd" --存放配置文件一主目录
PidFile run/httpd.pid --pid文件
Timeout 120 --连接超时时间
KeepAlive Off --一般是短时间下载文件比较多的网站 在ON的时候 一次连接多次请求
MaxKeepAliveRequests 100
KeepAliveTimeout 15
keepalive参数修改小测试
off 的情况, 别人刷新你的一个页面
netstat -nt |grep :80 可以看到一个IP有多次连接
或者使用netstat -nt |grep :80 |awk -F: '{print $8}' |sort |uniq -c
命令来查看
on的
情况, 别人刷新页面
netstat -nt |grep :80 可以看到一个IP只有一次连接(15秒后再刷新会产生新连接)
两分钟左右不刷新,TIME_WAIT连接断开
# cd /usr/sbin/
# mv httpd httpd.prefork
# mv httpd.worker httpd
# /etc/init.d/httpd restart
# httpd -l
dynamic shared object 动态共享模块
Include conf.d/*.conf --表示conf.d/下的*.conf配置文件生效
User apache
Group apache --以什么身份运行
ServerAdmin root@localhost --管理邮箱
DocumentRoot "/var/www/html" --网站家目录
DirectoryIndex index.html index.html.var --定义主页文件
AccessFileName .htaccess --网页加密
ErrorLog logs/error_log --错误日志
LogLevel warn --日志等级
修改主页类型或者主页名
DirectoryIndex index.php index.html.var
elinks 10.1.1.45 --elinks是一个文本模式的web浏览器
DefaultLanguage zh-CN --默认语言集打开注释,并改为简体中文zh-CN
LanguagePriority zh-CN en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-TW --语言优先级,把zh-CN写到最前
AddDefaultCharset UTF-8 --字符编码,如果中文的话,有可能需要改为gb2312或者gbk,因你的网站文件的默认编码而异
--扩展:
windows默认gb2312
linux默认utf-8
windows里文件内容的结束符和linux下不一样
所以把windows的文件拿到linux写脚本进行字符处理会出现问题
解决方法:
dos2unix
unix2dos
indexes --指当找不到默认的主页文件时,就把此目录下的文件或者目录以列表形式显示出来
FollowSymlinks --允许符号链接,扩展了网站根目录,允许链接到网站根目录以外
allowoverride none --可以把none改为all来允许.htaccess控制
order allow,deny --指定的是先允许,后拒绝
allow from all --指定允许所有
把网站的文件修改成目录列表的形式
条件1.
Options Indexes FollowSymLinks --相应目录要有indexes参数
条件2.
没有主页文件
条件3.
符合上面两个条件,就会访问到redhat的欢迎页面
vim /etc/httpd/conf.d/welcome.conf --注释掉这个欢迎页面,或者是删除它
files 容器 --针对文件的控制
<Directory "/www">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
<files "1"> --表示35这个客户端不能访问/www/1,而且如果要控制/www/bbs/1这个文件,不能在这里写成<files "bbs/1">,需要在/www/bbs这个目录的directory容器里再嵌套files标签来控制
order allow,deny
allow from all
deny from 10.1.1.35
</files>
</Directory>
网站下所有目录(包括子目录)以ule开头的文件都不能被访问
<Files ~ "^ule">
Order allow,deny
Deny from all
</Files>
网站下所有目录(包括子目录)以.txt结尾的文件都不能被访问
<Files ~ "\.txt$">
Order allow,deny
Deny from all
</Files>
<Location "/bbs">
order allow,deny
deny from all
</Location>
--这是对http://IP/bbs 这种URL来进行权限控制
--location容器有时候和directory有可能重合,并且配置有冲突,(如果一个是允许,一个是拒绝,无论是location拒绝,还是directory拒绝,最终结果都是拒绝的)下面
<Location "/bbs">
order allow,deny
deny from all
</Location>
<Directory "/www/bbs">
order allow,deny
allow from all
</Directory>
--注意:在rhel6里,有细微变化,location的优先级要高
<Location "/bbs">
order allow,deny
deny from all
</Location>
--这是对http://IP/bbs 这种URL来进行权限控制
--location容器有时候和directory有可能重合,并且配置有冲突,(如果一个是允许,一个是拒绝,无论是location拒绝,还是directory拒绝,最终结果都是拒绝的)下面
<Location "/bbs">
order allow,deny
deny from all
</Location>
<Directory "/www/bbs">
order allow,deny
allow from all
</Directory>
--注意:在rhel6里,有细微变化,location的优先级要高
对mod_status和mod_info这两个DSO配置服务器的信息查看
L
oadModule status_module modules/mod_status.so
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 10.1.1.35
</Location>
LoadModule info_module modules/mod_info.so
<Location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from 10.1.1.35
</Location>
http://IP/server-status
http://IP/server-info
# vim /www/.htaccess --对哪个目录进行限制,就在哪个目录下建立此文件
authname "please input your username and password! @_@"
authtype basic
authuserfile /etc/httpd/userpasswd
require valid-user
# htpasswd -c /etc/httpd/userpasswd aaa --创建此文件,并加入一个用户,自定义密码,注意此用户与系统普通用户无关
#
htpasswd /etc/httpd/userpasswd bbb --再增加一个用户
第二种做法:
# vim /etc/httpd/conf/httpd.conf
<Directory "/www">
Options Indexes FollowSymLinks
AllowOverride None --none不用改成all
Order allow,deny
Allow from all
authname "please input your username and password! @_@"
authtype basic
authuserfile /etc/httpd/userpasswd
require valid-user --把这四句直接加到这个目录标签里
</Directory>
2,
# htpasswd -c /etc/httpd/userpasswd aaa
3,
# /etc/init.d/httpd restart --重启后,验证,也可以
基于IP的虚拟主机
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www/aaa
ServerName 10.1.1.36
ErrorLog logs/36-error_log
CustomLog logs/36-access_log common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/bbb
ServerName 10.1.1.37
ErrorLog logs/37-error_log
CustomLog logs/37-access_log common
</VirtualHost>
基于端口的虚拟主机
Listen 80 --这一句默认就有,不用再加
Listen 8000
Listen 8080
<VirtualHost *:80>
DocumentRoot /www/aaa
ServerName 10.1.1.36
ErrorLog logs/36-error_log
CustomLog logs/36-access_log common
</VirtualHost>
<VirtualHost *:8000>
DocumentRoot /www/bbb
ServerName 10.1.1.36
ErrorLog logs/37-error_log
CustomLog logs/37-access_log common
</VirtualHost>
基于域名的虚拟主机
--需要DNS的cname记录的支持,或者A记录
aaa.web.com
bbb.web.com
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www/aaa
ServerName aaa.web.com
ErrorLog logs/aaa-error_log
CustomLog logs/aaa-access_log common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /www/bbb
ServerName bbb.web.com
ErrorLog logs/bbb-error_log
CustomLog logs/bbb-access_log common
</VirtualHost>
使用第三方模块 实现apache限速
share/soft/lamp/apache_source/mod-cband-0.9.7.2.tgz
解压并CD进去进行编译
tar xvf mod-cband-0.9.7.2.tgz -C /usr/src/
cd /usr/src/mod-cband-0.9.7.2/
./configure ;make ;make install
确认/etc/httpd/conf/httpd.conf里是否自动加载了下面这句话
LoadModule cband_module /usr/lib/httpd/modules/mod_cband.so
针对虚拟主机new.cluster.com进行限速
NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot /www/aaa
ServerName news.cluster.com
ErrorLog logs/aaa.com-error_log
CustomLog logs/aaa.com-access_log common
cbandlimit 100M --指网站允许的总的下载流量
cbandperiod 1W --清空时间
cbandspeed 1024 10 30 --当前总带宽,每秒可以同时连接10个,最大的总连接数,1024在这里除以8就是kb每秒的单位
cbandremotespeed 10kb/s 3 3 --针对单一客户端下载速度为10kb/s,每秒可以同时3个连接,最多一个IP生成3个连接
<location /cband-status>
sethandler cband-status --使用http://IP/cband-status访问控制状态
</location>
<location /cband-status-me>
se
thandler cband-status-me ----使用http://IP/cband-status-me访问控制状态
</location>
</VirtualHost>
对apache做每天一次的日志轮转
1,使用logrotate来做
2,自己写脚本
#!/bin/bash
mv /var/log/httpd/access_log /var/log/httpd/access_log.`date -d "-1 days" +%F`.log
touch /var/log/httpd/access_log
kill -HUP `cat /etc/httpd/run/httpd.pid`
把上面脚本放到crontab里0点执行
3.
www.cronolog.org
软件包位置:
ls /share/soft/soft/log/
cronolog-1.6.2.tar.gz cronolog.pdf cronosplit.p
f
解压到任意目录,我这里是/usr/src/
# tar xvf cronolog-1.6.2.tar.gz -C /usr/src
# cd /usr/src/cronolog-1.6.2/
编译安装
# ./configure ;make ;make install
,先注释掉虚拟主机,虚拟主机需要每个都配,为了方便,这里注意掉,使用原来的web服务器配置
vim /etc/httpd/conf/httpd.conf
修改:
CustomLog logs/access_log combined
改成:
CustomLog "|/usr/local/sbin/cronolog /opt/%Y/%m/%d/access_log" combined
--注意格式不要写错
重启apache后,过几秒,或者访问一下apache
就会在/opt下产生了
关于日志合并
# sort -m -k 4 -o newaccess.log access_log access_log1
或者使用awstats,weblizer这样的日志分析软件去做日志合并