Posts tagged Apache
一个很有用的apache指令SetEnvIf
0SetEnv 指令
| 说明 | 设置环境变量 |
|---|---|
| 语法 | SetEnv env-variable value |
SetEnvIf 指令
| 说明 | 根据客户端请求属性设置环境变量 |
|---|---|
| 语法 | SetEnvIf attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ... |
| 作用域 | server config, virtual host, directory, .htaccess |
SetEnvIf指令根据客户端的请求属性设置环境变量。第一个参数attribute必须是下列三种类别之一:
- 一个HTTP请求头域(参见RFC2616);例如:
Host,User-Agent,Referer,Accept-Language。可以用一个正则表达式来进行匹配。 - 下列请求属性之一:
Remote_Host远程主机名(若可用)Remote_Addr远程主机IP地址Server_Addr接收到请求的服务器IP地址(2.0.43及以后版本)Request_Method所用的请求方法(GET,POST等等)Request_Protocol请求所使用的协议及其版本(“HTTP/0.9″, “HTTP/1.0″, “HTTP/1.1″等)Request_URI在HTTP请求行中请求的资源(通常是URL中去除协议、主机以及查询字符串后剩余的部分)。
- 列出的与该请求关联的环境变量名字中的一个。这将允许
SetEnvIf指令基于预先匹配的结果进行测试。只有那些由较早的SetEnvIf[NoCase]指令定义的环境变量才可以按照这种方式测试。”较早的”意思是它们在更上层的作用域(比如全局范围)中被定义或者在同一作用域中较早出现。只有在请求的属性未能得到匹配并且attribute没有使用正则表达式的时候,环境变量才会被考虑。
如:不记录192.168.7.139的访问日志
首先设置环境变量 SetEnvIf Remote_Addr “192\.168\.7\.139″ dontlog
使用上面设置的环境变量
CustomLog “logs/access_log” common env=!dontlog
SetEnvIfNoCase
说明: Sets environment variables based on attributes of the request without respect to case
语法: SetEnvIfNoCase attribute regex [!]env-variable[=value] [[!]env-variable[=value]] …
上下文: 服务器配置, 虚拟主机, 目录, .htaccess
覆盖项: FileInfo
状态: Base
模块: mod_setenvif
兼容性: Apache 1.3 and above
CustomLog logs/hebgc.com/access.log combined env=!useless-file
Linux下查看apache连接数
0Linux命令:
ps -ef | grep httpd | wc -l
查看Apache的并发请求数及其TCP连接状态:
Linux命令:
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
返回结果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
说明:
SYN_RECV表示正在等待处理的请求数;
ESTABLISHED表示正常数据传输状态;
TIME_WAIT表示处理完毕,等待超时结束的请求数。
Apache 重写规则的常见应用 (rewrite)
0 一: 目的
本文旨在提供如何用Apache重写规则来解决一些常见的URL重写方法的问题,通过常见的
实例给用户一些使用重写规则的基本方法和线索。
二:为什么需要用重写规则?
一个网站,如果是长期需要放在internet上提供服务,必定会有不断地更新和维护,如临
时转移到其它服务器进行维护,重新组织目录结构,变换URL甚至改变到新的域名等等,
而为了让客户不会因此受到任何影响,最好的方法就是使用Apache Rewrite Rule(重写
规则)。
三: 重写规则的作用范围
1) 可以使用在Apache主配置文件httpd.conf中
2) 可以使用在httpd.conf里定义的虚拟主机配置中
3) 可以使用在基本目录的跨越配置文件.htaccess中
四:重写规则的应用条件
只有当用户的WEB请求最终被导向到某台WEB服务器的Apache后台,则这台WEB服务器接受
进来的请求,根据配置文件该请求是主配置还是虚拟主机,再根据用户在浏览器中请求的
URI来配对重写规则并且根据实际的请求路径配对.htaccess中的重写规则。最后把请求
的内容传回给用户,该响应可能有两种:
1) 对浏览器请求内容的外部重定向(Redirect)到另一个URL。
让浏览器再次以新的URI发出请求(R=301或者R=302,临时的或是永久的重定向)
如:一个网站有正规的URL和别名URL,对别名URL进行重定向到正规URL,或者网站改换
成了新的域名
则把旧的域名重定向到新的域名(Redirect)
2) 也可能是由Apache内部子请求代理产生新的内容送回给客户[P,L]
这是Apache内部根据重写后的URI内部通过代理模块请求内容并送回内容给客户,而客户
端浏览器并
不知道,浏览器中的URI不会被重写。但实际内容被Apache根据重写规则后的URI得到。
如:在公司防火墙上运行的Apache启动这种代理重写规则,代理对内部网段上的WEB服务
器的请求。
Apache上的防图片/mp3盗链配置:mod_rewrite it
0Apache上的防mp3盗链的参考配置如下:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www.)?niernier.com/.*$ [NC]
RewriteRule .(mp3|rar)$ http://www.niernier.com/archives/000445.html [R=301,L]
#RewriteLog “logs/rewrite.log”
#RewriteLogLevel 3
功能:
不仅屏蔽/禁止非本网站的盗链访问,还将盗链请求转给自身的网站,让读者知道谁是真正的原创作者。