在这里让我们一起学习,一起提高!
http://httpd.apache.org/docs/2.4/upgrading.html

http://httpd.apache.org/docs/2.4/new_features_2_4.html



/*2012.12.25 補充*/

apache 2.4.3 版有對 window 版的 ssl bug 做修正 ,bug 說明 http://www.apachelounge.com/viewtopic.php?p=22306

這個 bug 簡而言之就是會讓 443 的頁面連線掛點...
Tags:

apache开启防盗链方法 不指定

jed , 2012-3-17 13:57 , 服务器技术 , 评论(0) , 阅读(5634) , Via 本站原创
    Ps:现在盗链比较严重,所以很多站长都要学会防盗链,一下是我查看的一些方法,效果不错


8. 防止盗链
8.1 启用 Rewrite 模块
此模块默认没有启用


#a2enmod rewrite    8.2 配置
修改/etc/apache2/sites-available下对应站点的配置文件, 将
Tags: ,
编辑/etc/rc.local,加入iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE,外网口eth1为dhcp获得IP。

进入本机的数据包为INPUT,从本机发送出去的数据包为OUTPUT,只是路由的包为FORWARD;防火墙就是基于这3个过滤点来操作的。

对于包的操作有:目标(Target)、丢弃(DROP)、接受(ACCEPT)、弹回(REJECT)、日志(LOG)……等等,比如iptables -A INPUT -p icmp -j DROP(-A代表添加到的过滤点 -p针对的协议类型;此条命令的作用是禁ping),通常是拒绝所有,再一个一个的打开。

iptables -F 清空所有规则
找到Apache的配置文件,Linux下的位置一般在 /usr/local/apache/conf/httpd.conf


或者apache 2.2 的 /usr/local/apache2/conf/extra/httpd-vhost.conf


SetEnvIfNoCase Referer "^http://www.216so.com" local_ref=1
SetEnvIfNoCase Referer "^http://216so.com" local_ref=1
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>


其中粗体的是您的网址,如果有多个,就加多行 本文来自雷奥网

斜体的是您需要防盗链的文件后缀,中间用|隔开

还一种写法,是用正则的,这种写法在各个版本的apache比较通用。


写法是


SetEnvIfNoCase Referer "^http://.*\.216so\.com" local_ref=1
SetEnvIfNoCase Referer ".*\.216so\.com" local_ref=1
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>

  


或是再加个
  SetEnvIfNoCase Referer "^$" local_ref=1
  有些会删掉 http referer 的 proxy 用户需要这个


其中粗体的部分有一点区别,用正则写法, \ 符号代表转义,因为.本身在正则中有自己的作用。



上面说的是Apache防盗链的使用,现在来说Apache防盗链的破解,说简单点Apache防盗链是通过来路来确定用户是否盗链的,如果自己写采集程序的话,我们完全可以利用程序去模拟referer和useragent。



Tags: ,
1. 操作系统:      在Windows 2003
2. Apache 2.2.6   http://httpd.apache.org  
     安装到c:\apache2.2
3. PhP 5.2.4         http://www.php.net
    使用zip版本,释放到C:\php
4. 配置apache 的php DSO.
修改 httpd.conf
# For PHP 5 do something like this:
LoadModule php5_module "c:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php

# configure the path to php.ini
PHPIniDir "c:/php"

Copy c:\php.ini-dist 为php.ini ,修改php.ini ,
extension_dir = "c:\php"
把c:\php\ext目录下的php_mssql.dll 拷贝到c:\php
把 extension php_mssql.dll 注释取消

5. apache configtest 没问题。但是error_log中有警告未找到模块。使用phpinfo()看到php_mssql.dll加载是提示有错误未找到模块。一般都是因为php_mssql.dll需要用到的dll没有在路径中发现的原因。

6.使用borland 的tdump.exe 查看 php_mssql.dll 需要 ntwdblib.dll 支持.但是SQL Server 2005 native client 已经没有这个文件了。到SQL Server 2000里抓一个过来。放到windows\system32或者php目录.
apache2.2/bin目录也放一个。保证它哪里都能找到就是了。

7. 配置限制用户并发线程,使用Apache模块 mod_limitipconn
a:自己编译:
源码下载:http://dominia.org/djao/limit/win32/mod_ipconn.zip
编译环境:VS 2005 Windows XP 安装了Apache 2.2.6 lib 和include
b.直接下载,见上文链接

把已经编译好的mod_ipconn.dll 放到apache的安装目录下的modules子目录下。


在httpd.conf中增加如下配置信息:
LoadModule status_module modules/mod_status.so
ExtendedStatus On
LoadModule limitipconn_module modules/mod_limitipconn.dll

<IfModule mod_limitipconn.c>
<Location />
MaxConnPerIP 3
NoIPLimit images/*
</Location>
<Location /mp3>
MaxConnPerIP 1
OnlyIPLimit audio/mpeg video
</Location>
</IfModule>
重新启动apache即可.
用Flashget测试。如果超过3个连接线程,会出503错误。
所有配置成功.
--------------------------------------------------------------
VS2005 下编译 mod_limitipconn.dll详细步骤:
1.开发环境
Windows XP SP2简体中文版 + VS 2005 Team Suite 简体中文版 +SP1

2.安装apache 2.2.6 Win32版本(记得安装开发组件)

自httpd.apache.org 下载安装windows 版本的apache-2.2.6
假定安装目录为C:\apache

3.下载mod_ipconn win32源码:
http://dominia.org/djao/limit/win32/mod_ipconn.zip

4. 项目转换为Vs2005
解压缩后,使用vs2005打开项目文件,按提示转换vc6项目为vs2005项目文件。

5.配置apache头文件和lib库。

mod_ipconn属性页->配置属性->C/C++->常规->附加包含目录
输入安装的apache的include目录

mod_ipconn属性页->配置属性->链接器->附加依赖项
内容如下:
把apache的lib目录修改为自己的apache目录实际位置
odbc32.lib odbccp32.lib E:\server\Apache2\lib\libhttpd.lib E:\server\Apache2\lib\libapr.lib
另外,把 libapr.lib改为 libapr-1.lib


6.解决方案配置为Release版本

7.编译生成mod_limitipconn.dll 。

完成。

下载地址:
下载文件 (已下载 403 次)



本示例将避免对图片的请求出现在访问日志中。 你可以随便改改就将它用于避免特定目录或特定主机的请求被记入日志。


SetEnvIf Request_URI \.gif image-request
SetEnvIf Request_URI \.jpg image-request
SetEnvIf Request_URI \.png image-request
CustomLog logs/access_log common env=!image-request

只记录php访问记录的设置

SetEnvIf Request_URI "^/.*\.php$" dontlog
CustomLog logs/access_log common env=dontlog



SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
SetEnvIf Request_URI "^/favicon.ico$" dontlog
SetEnvIf Request_URI "^/images/.*$" dontlog
SetEnvIf Request_URI "^/.*\.js$" dontlog
SetEnvIf Request_URI "^/.*\.css$" dontlog
SetEnvIf Request_URI "^/.*\.dwr$" dontlog


#~~~~~~~~~~~~~~~~~~~~~~~~~~~~VirtualHost~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

NameVirtualHost 192.168.1.103:80


<VirtualHost 192.168.1.103:80>
    ProxyRequests On
    DocumentRoot /opt/project

    ServerName 192.168.1.103
    DirectoryIndex index.jsp
    
    RewriteEngine On
    RewriteRule ^(http|https)://.* - [F]
    
    ProxyPass /pic/ http://192.168.1.101/
    ProxyPass /report/ http://192.168.1.101:8081/report/
    ProxyPass / balancer://proxy/ stickysession=JSESSIONID
    <Proxy balancer://proxy>
          BalancerMember ajp://192.168.1.103:10003/  route=A loadfactor=1
          BalancerMember ajp://192.168.1.103:20003/  route=B loadfactor=1
          BalancerMember ajp://192.168.1.101:10003/  route=C loadfactor=1
          BalancerMember ajp://192.168.1.101:20003/  route=D loadfactor=1
    </Proxy>
    ErrorLog logs/error_log.log
    CustomLog "|/usr/local/httpd/bin/rotatelogs /usr/local/httpd/logs/access_%Y_%m_%d.log 86400 480" combined env=!dontlog
</VirtualHost>



语法SetEnv env-variable value  


语法SetEnvIf attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ...  


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


The SetEnvIfNoCase is semantically identical to the SetEnvIf directive, and differs only in that the regular expression matching is performed in a case-insensitive manner. For example:
This will cause the site environment variable to be set to "apache" if the HTTP request header field Host: was included and contained Apache.Org, apache.org, or any other combination.
SetEnvIfNoCase 当满足某个条件时,为变量赋值,一般结合其他指令使用。
如:
1。SetEnvIf Request_URI "/logo(.)+" local_ref=0
Allow from env=local_ref  当local_ref有值时,可以访问。
当满足条件时才记录日志。

gzip安装问题 不指定

jed , 2009-4-30 08:32 , 服务器技术 , 评论(0) , 阅读(2711) , Via 本站原创
httpd: Syntax error on line 266 of /usr/local/apache2.2.0/conf/httpd.conf: module deflate_module is built-in and can't be loaded
  - 表示模块已内置,不必LoadModule了

tar.bz2的文件怎么解压缩?
- 在linux下面可以直接用 tar jxvf *.tar.bz2解压缩  
- 先去digistar.com/bzip2/下个bzip回来. 装上后 ,用 bzip2 -cd ***就可以解了.


mod_deflate.c在modules/metadata下没找到它,后来发现在modules/filters下
/usr/local/apache2.2.0/bin/apxs -i -a -c mod_deflate.c
提示出错:
Warning!  dlname not found in /usr/local/apache2.2.0/modules/mod_deflate.la.
Assuming installing a .so rather than a libtool archive.
chmod 755 /usr/local/apache2.2.0/modules/mod_deflate.so

后来使用这种方式解决:
gcc -shared -o mod_deflate.so mod_deflate.o
cp mod_deflate.so /usr/local/apache2.2.0/modules
/usr/local/apache2.2.0/bin/apxs -i -a -c mod_deflate.c
Tags: ,
  利用Apache中的mod_gzip模块,我们可以利用gzip的压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端的浏览器。如果是纯文本的内容,效果非常明显,大约可以压缩到原来的30%-40%,使用户的浏览速度大大加快。

  Gzip需要客户端浏览器支持,目前大部份浏览器都支持gzip,如IE,Netscape,Mozilla等,所以这种方法值得一试。我们可以利用PHP中的预定义变量$_SERVER[‘HTTP_ACCEPT_ENCODING’]来判断客户端浏览器是否支持gzip。

  gzip1.php

<?
if(ereg('gzip',$_SERVER['HTTP_ACCEPT_ENCODING'])) {
 //浏览器支持
} else {
 //浏览器不支持,输出其它内容
}
?>
[code]

  接下来我们对上面这个PHP程序进行扩展,使用ob_start(ob_gzhandler)来将网页内容压缩,存入缓冲并发送给支持gzip的浏览器,浏览器会自动将压缩后的内容解压,显示。

  gzip2.php
[code]
<?
define('MAX',100);

if(ereg('gzip',$_SERVER['HTTP_ACCEPT_ENCODING']))
{
 //浏览器支持gzip,将内容压缩并缓冲输出
 ob_start("ob_gzhandler");
 $output = '';

 for($i=0;$i<=MAX;$i++)
 {
  $output .= "This is line $i ";
 }
 echo "浏览器支持gzip压缩输出";
 echo $output;
}
else
{
 //浏览器不支持,直接输出
 for($i=0;$i<=MAX;$i++)
 {
  $output .= "This is line $i ";
 }

 echo "浏览器不支持gzip压缩输出 ";
 echo $output;
}
?>


  使用gzip压缩生成的网页的HTTP头信息与一般的网页相比中会多出这样的信息:

Content-Encoding: gzip
Content-Length: 270

  如果你想得到更详细的信息,请参看mod_gzip项目主页:

  http://sourceforge.net/projects/mod-gzip/

  类似地,我们也可以利用mod_deflate,压缩率比mod_gzip略低一些。调用zip函数需要耗用服务器内存,所以要慎用,视需求而定。
Tags: , ,

Apache使用gzip模块 不指定

jed , 2009-4-30 08:21 , 服务器技术 , 评论(0) , 阅读(2437) , Via 本站原创
如果你的web server是采用apache那你就有机会通过安装一个mod_gzip软件模块提高你的网站访问速度
这个神通广大的模块就是mod_gzip. 它通过用和gzip一样的压缩算法对apache发出的页面进行压缩,可能的话可以把页面压缩成为原来大小的十份之一。哪,如果10K的页面只要传1K这 不就是提速10倍嘛。当然一般网页只可以达到3-6倍。那也很不错。对吧。连google这样一个大的网站都采用这个技术。你还不快跟上?

这样一个好东东,来来来,我告诉你如何安装:分3步,1、下载,2、修改配置,3、测试。

下载

http://www.remotecommunications.com/apache/mod_gzip 下载mod_gzip.c 还有它的补丁。

安装, 配置
把mod_gzip放到你的apache的源代码目录下,新建一个mod_gzip目录如果需要补丁(针对1.3.17.la版) 还需运行:
patch mod_gizp.c
按你需要,在配置中选择动态DSO或静态编译进apache系统。如何处理在README中讲得很清楚,如-add-module=mod_gzip.c, make,make install等等。这里不多讲。

把下列配置加入httpd.conf尾部。

# MOD_GZIP configuration
mod_gzip_on Yes
mod_gzip_minimum_file_size 1002
mod_gzip_maximum_file_size 0
mod_gzip_maximum_inmem_size 60000
mod_gzip_item_include mime "application/x-httpd-php"
mod_gzip_item_include mime text/*
mod_gzip_item_include mime "httpd/unix-directory"
mod_gzip_dechunk Yes
mod_gzip_temp_dir "/tmp"
mod_gzip_keep_workfiles No
mod_gzip_item_include file ".php3$"
mod_gzip_item_include file ".txt$"
mod_gzip_item_include file ".html$"
mod_gzip_item_exclude file ".css$"
mod_gzip_item_exclude file ".js$"


在保存修改后运行
…/bin/apachectl configtest确保配置修改无误。
然后用 apachectl restart 指令重起服务。

修改,测试

在宣布做好了之前在测试一下是优秀程序员的习惯。为了尽量不影响你的用户的浏览,我们可以用把新的apache驱动在8080端口上或者用指令控制mod_gzip起作用的目录,而不是一下子全用mod_gzip.
用法如下:

MOD_GZIP configuration

没有问题后你就可以让你的用户很开心的发现'XX网站现在好快哦。'
Mod_gzip真的很神奇,100K的HTML大 文档只要12K就可以传到用户端了。越先采用这个技术你的用户对你的网站的高速度印象就越深。不过有所得必有所失,由于解压是在客户端进行的,效果和用户 的浏览器有一定关系。

Tags: ,
分页: 1/3 第一页 1 2 3 下页 最后页 [ 显示模式: 摘要 | 列表 ]