精华内容
下载资源
问答
  • 16.1.3 Apache的模块

    2009-12-22 09:34:00
    16.1.3 Apache的模块Apache采用模块化的设计,模块安装后就可以为Apache内核增加相应的新功能。默认情况下Apache已经安装了部分的模块,用户也通过使用模块配置,自定义Apache服务器中需要安装哪些功能,这也是...

    16.1.3  Apache的模块

    Apache采用模块化的设计,模块安装后就可以为Apache内核增加相应的新功能。默认情况下Apache已经安装了部分的模块,用户也通过使用模块配置,自定义Apache服务器中需要安装哪些功能,这也是Apache灵活性的表现。如表16.1列出了Apache全部的默认模块和部分常用的非默认模块。

    16.1  Apache模块列表

       

    是否默认安装

    mod_actions

    运行基于MIME类型的CGI脚本

    mod_alias

    支持虚拟目录和页面重定向

    mod_asis

    发送包含自定义HTTP头的文件

    mod_auth_basic

    基本验证

    mod_auth_digest

    使用MD5加密算法的用户验证

    mod_authn_alias

    允许使用第三方验证

    mod_authn_anon

    允许匿名用户访问认证的区域

    mod_authn_dbd

    使用数据库保存用户验证信息

    mod_authn_dbm

    使用DBM数据文件保存用户验证信息

    mod_authn_default

    处理用户验证失败

    mod_authn_file

    使用文本文件保存用户验证信息

    mod_authnz_ldap

    使用LDAP目录进行用户验证

    mod_authz_default

    处理组验证失败

    mod_authz_groupfile

    使用plaintext文件进行组验证

    mod_authz_host

    基于主机的组验证

    mod_authz_user

    用户验证模块

    mod_autoindex

    生成目录索引

    mod_cache

    通向URI的内容Cache

    mod_cgi

    支持CGI脚本

    mod_cgid

    使用外部CGI进程运行CGI脚本

    mod_dir

    提供用于trailing slash的目录和索引文件

    mod_env

    调整传输给CGI脚本和SSI页面的环境变量

    mod_example

    解释Apache模块的API

    mod_filter

    过滤信息

    mod_imagemap

    imagemap处理

    mod_include

    解析HTML文件

    mod_isapi

    ISAPI扩展

    mod_ldap

    使用第三方LDAP模块进行LDAP连接和服务

    mod_log_config

    记录发给服务器的访问请求

    mod_logio

    记录每个请求输入、输出的字节数

    mod_mime

    联合被请求文件扩展名和文件行为的内容

    mod_negotiation

    提供内容协商

    mod_nw_ssl

    NetWare打开SSL加密

    mod_proxy

    支持HTTP1.1协议的代理和网关服务器

    mod_proxy_ajp

    mod_proxyAJP支持模块

    mod_proxy_balancer

    mod_proxy的负载均衡模块

    mod_proxy_ftp

    mod_proxyFTP支持模块

    mod_proxy_http

    mod_proxyHTTP支持模块

    mod_setenvif

    允许设置基于请求的环境变量

    mod_so

    在启动或重启时提高可执行编码和模块的启动

    续表

       

    是否默认安装

    mod_ssl

    使用SSLTLS的加密

    mod_status

    提供服务器性能运行信息

    mod_userdir

    设置每个用户的网站目录

    mod_usertrack

    记录用户在网站上的活动

    mod_vhost_alias

    提供大量虚拟主机的动态配置

    关于Apache模块的自定义安装和模块的使用将在后面的章节中陆续进行讲解。

    展开全文
  • 在事件查看器中可以看到,Apache无法找到指定的模块(php-5.1.2/php5apache2.dll)。可是明明这个文件好好地在那里,为什么? 原来是系统找不到该模块所需的 dll 文件,而造成启动失败,Apache在报告错误时简单地...
    但是试图重新启动Apache时却往往不能成功。在事件查看器中可以看到,Apache无法找到指定的模块(php-5.1.2/php5apache2.dll)。可是明明这个文件好好地在那里,为什么? 原来是系统找不到该模块所需的 dll 文件,而造成启动失败,Apache在报告错误时简单地报告为模块找不到。 那么如何判断该模块需要哪些dll才能执行?一般来说,模块所需的dll都饱含在该...
      正文:

    Apache的许多外挂功能是通过模块实现的,比如php、subversion等,安装这些功能时就需要向Apache中添加模块。看似很简单,向 httpd.conf 中添加下面这一行(以php为例):

    LoadModule php5_module "php-5.1.2/php5apache2.dll"

    但是试图重新启动Apache时却往往不能成功。在事件查看器中可以看到,Apache无法找到指定的模块(php-5.1.2/php5apache2.dll)。可是明明这个文件好好地在那里,为什么?

    原来是系统找不到该模块所需的 dll 文件,而造成启动失败,Apache在报告错误时简单地报告为模块找不到。

    那么如何判断该模块需要哪些dll才能执行?一般来说,模块所需的dll都饱含在该模块的软件包中,例如上述 php5apache2.dll 所需的 php5ts.dll 就包含在php的发行包中,并与php5apache2.dll位于同一目录下。如果你安装了 Microsoft Visual C++ 6.0,其中附带的一个工具Dependency Walker可以精确地告诉你模块需要什么 dll。用Dependency Walker打开php5apache2.dll,可以看到该模块需要以下的 dll:php5ts.dll,libhttpd.dll,libapr.dll,libaprutil.dll,msvcrt.dll,kernel32.dll。其中 msvcrt.dll 和 kernel32.dll 是系统文件,libxxx.dll 是 apache 自带的 dll 文件。

    确定了模块需要哪些dll之后,下一步就是让系统找到这些dll。Apache启动时,它会在Apache.exe所在目录(一般是 C:\Program Files\Apache Group\Apache2\bin)和系统的 %PATH% 变量中寻找dll。所以最简单的方法就是将模块所需的 dll 文件复制到 Apache.exe 所在目录下,或者复制到 C:\Windows\system32 下。这样Apache就可以正常加载该模块了。

    另外一个方法就是修改%PATH%环境变量,使之包含模块所需dll所在的目录。在上面的例子里,假设php安装在 C:\php 下,那么向 %PATH% 中添加 C:\php,Apache即可正常加载php模块了。但是,如果你的Apache是通过系统服务启动的话,那么修改完环境变量之后必须重新启动计算机才能正常启动Apache服务

    展开全文
  • · 作者:laruence(http://www.laruence.com/)· 本文地址: http://www.laruence.com/2008/04/09/112.html· 转载请注明出处 还是和论文相关,要编写一个Apache的模块,挂在post read_request阶段,在第一时间,判断...
    · 作者:laruence(http://www.laruence.com/)
    · 本文地址: http://www.laruence.com/2008/04/09/112.html
    · 转载请注明出处           
        还是和论文相关,要编写一个Apache的模块,挂在post read_request阶段,在第一时间,判断一个链接是否是而已连接请求,并在第一时间拒绝恶意连接请求。
          首先遇到的第一个问题,就是需要从http.conf中读取配置信息,提供俩个配置指令,MaxNumber, TimeRange.指定在一段时间内的连接次数上限。
           编写的时候,遇到的第一个问题就是,moudule申明,不能通过编译,编译器提示重复定义。查了N遍手边的apache源码分析,也没有找到原因,如:
         
    ......
    module door_module;

    ......


    module MODULE_VAR_EXPORT door_module 
    = {
            STANDARD_MODULE_STUFF,
            NULL,
            NULL,
            NULL,
            create_door_config,
            NULL,
            door_cmds,
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            door_authorization,
    }
    ;

     最后,删除掉第一个module申明, 通过编译。
          遇到的第二个问题,就是命令表中的命令处理函数在http_config.h中的定义如下:
          
    const char * (*cmd_func)();
          但是,《Aapache源码分析》和网上的资料中,命令处理都是带有参数的,如下:
      
    static const char  * maxRequest(cmd_parms *cmd, void * dconf, const char * arg);
         真是,奇怪的很,我使用的是Apache 1.3的dev包,不知道是不是因为版本太低的缘故? 最后,修改了http_config.h, 通过编译,并且工作正常。真的很奇怪,留待以后解决。
         这俩个问题这么糊涂的解决以后,接下来的工作就很简单了。
         首先在server config阶段,初始化我们的全局配置结构。
          
    typedef struct {
         
    int MaxNumber;
             
    int TimeLimit;
    }
    mod_door_config;

    static void * create_door_config(pool *p, server_rec * s){
            mod_door_config 
    * cf = static_cast<mod_door_config *>(ap_palloc(p, sizeof(mod_door_config)));
            cf
    ->MaxNumber = 100;
            cf
    ->TimeLimit = 60;
            
    return cf;
    }

         通过ap_palloc为全局配置结构分配资源,并初始化配置结构。然后定义命令表。
     
    static const command_rec door_cmds[] = {
            
    {"MaxRequest", maxRequest, NULL, RSRC_CONF|ACCESS_CONF, TAKE1, "Can't get MaxRequest"},
            
    {"TimeRange", timeRange,  NULL, RSRC_CONF|ACCESS_CONF, TAKE1, "Cant' get Time Range"},
            
    {NULL}
    }
    ;
       接着定义命令处理函数:
    static const char  * maxRequest(cmd_parms *cmd, void * dconf, const char * arg){
            server_rec 
    * s = cmd->server;
            mod_door_config 
    *cf = static_cast<mod_door_config *>(ap_get_module_config(s->module_config, &door_module));
            cf
    ->MaxNumber = atoi(arg);
            
    //cerr<<cf->MaxNumber<<endl;
            return NULL;
    }

    static const char   * timeRange(cmd_parms *cmd, void * dconf, const char * arg){
            server_rec 
    * s = cmd->server;
            mod_door_config 
    *cf = static_cast<mod_door_config *>(ap_get_module_config(s->module_config, &door_module));
            cf
    ->TimeLimit = atoi(arg);
            
    //cerr<<cf->TimeLimit<<endl;
            return NULL;
    }

    最后在验证阶段,来获取配置信息:
      
    static int door_authorization(request_rec * r){
            cerr 
    << r->connection->remote_ip<<endl;
            mod_door_config 
    * cf = static_cast<mod_door_config *>(ap_get_module_config(r->server->module_config, &door_module));
            
    //ap_rprintf(r ,"your IP : %s  ", r->connection->remote_ip);
            
    //ap_rprintf(r ,"MaxNumber : %d  ", cf->MaxNumber);
            
    //ap_rprintf(r ,"TimeRange : %s  ", cf->TimeLimit);
            
    //cerr<<cf->MaxNumber<<endl;
            return OK;
    }

     经过编译,测试,一切works well。
     
     先写这么多,等我慢慢研究这些遗留问题,留待以后补充。
     ps: 看源代码,是最快的学习方法。
    展开全文
  • Apache 2.x 中URL重写,是通过mod_rewrite.so 来实现的,所以您要查看您的Apache 是否已经被编译进去这个模块了,并且在Apache的配置文件httpd.conf 中已经调用了这个模块。在大多数主流发行版中,Apache 2.x 是把...
    1.1 关于rewrite模块的调用;
    Apache 2.x 中URL重写,是通过mod_rewrite.so 来实现的,所以您要查看您的Apache 是否已经被编译进去这个模块了,并且在Apache的配置文件httpd.conf 中已经调用了这个模块。在大多数主流发行版中,Apache 2.x 是把rewrite模块已经编入进去了。比如我用的是Slackware。Apache 2.x的配置文件,放在 /etc/httpd 目录下。

    在 httpd.conf 中,我们会发现类似如下的一行,是有关rewrite模块的,模块名是 mod_rewrite.so 。
    LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

    LoadModule rewrite_module lib/apache2/modules/mod_rewrite.so
    如果前面有#号,您要去掉。对于大多数发行版来说,Apache 2的模块一般是位于如下的两个位置
    /usr/lib/apache2/modules

    /usr/lib/httpd/modules
    如果在httpd中打开调用rewrite_module的设置,查看一下是不是能调用了,要通过 httpd -M的参数来查看;
    #/usr/sbin/httpd -M 
    如果发现有如下一行,说明模块已经能被调用了
    rewrite_module (shared)
    1.2 设置DocumentRoot的Directory;
    在Apache 2.x 中,我们会看到 DocumentRoot设置的一行。这行就是存放网页程序的地方。比如LinuxSir.Org 存放在 /opt/www 目录中。那么我们就要设置 DocumentRoot为如下的。
    DocumentRoot "/opt/www"
    然后我们再还要对 DocumentRoot做针对性的行为设置。在一般的情况下,httpd.conf 会给一个默认的。如果你要改 DocumentRoot的路径,同时也要改针对DocumentRoot的Directory的设置,也就是
    <Directory "DocumentRoot所设置的路径">

    比如我们把DocumentRoot的路径改为了 "/opt/www",那我们也要把 DocumentRoot做针对性的行为设置也要改成这个路径。

    <Directory "/opt/www">

    Options FollowSymLinks
    #AllowOverride None 注:把这行前面加#号,然后加下面的一行  ,也就是   AllowOverride ALL 
    AllowOverride ALL    
    Order allow,deny
    Allow from all

    </Directory>
    我们把AllowOverride 的参数设置为ALL,表示整台服务器上的,都支持URL规则重写。Apache 服务器要读每个网站下的家目录下的 .htaccess 文件。如果没有这个文件,或者这个文档没有定义任何关于URL重写的规则,则不会有任何效果。在一般的情况下,成熟的Web 服务器应用套件,都支持URL重写的,比如drupal和joomla 。当我们用这些程序时,会发现在安装包中有 .htaccess中有这个文件。我们把Apache配置好后,只是需要在这些程序的后台打开此功能就行了。

    1.3 重启httpd服务器;
    在一般情况下,在各个发行版中,都有httpd服务器启动脚本,比如
    # /etc/rc.d/rc.httpd restart   注:Slackware Linux
    # /etc/init.d/apache2 restart  注:ubuntu、Debian 等;
    # /etc/init.d/httpd start  注:Fedora 、Redhat、CentOS
    展开全文
  • apache模块入门

    千次阅读 2011-12-25 18:40:11
    apache的模块是各平台上本质是一个dso文件,*nix上的so或者windows上的dll等等。 运行时,apache的一个内置模块mod_so会家在这些外置的so文件 模块文件放在modules文件夹下, 配置在httpd.conf的loadModule和...
  • Apache模块

    2017-01-08 13:17:28
    DSO模块加载模块提供了灵活性。...模块的类型: 核心模块 标准模块 第三方模块 使用apxs编译安装模块 首先查看已经安装过mod_so模块了没 httpd -M 安装mod_log_access模块 wget ...
  • apache加载模块的说明

    千次阅读 2017-04-11 15:23:35
    LoadModule auth_basic_module modules/mod_auth_basic.so #基本认证模块 LoadModule auth_digest_module modules/mod_auth_digest.so #使用MD5用户验证模块 LoadModule authn_file_module modules/mod_authn_f
  • Apache模块加载流程

    2017-10-23 18:04:14
    Apache的模块加载包括两部分  第一部分是prelink的模块,这部分模块已经链接好了  在modules.c中 AP_DECLARE_DATA module *ap_prelinked_modules[] = { &core_module, &win32_module, &mpm_winnt_module, &...
  • Apache安装模块

    千次阅读 2013-09-25 15:32:42
    如果在apache发现没有mod_*,可能是当初编译apache的时候没有带上 --enable-*选项,或者Apache默认没有带上。我用最常用的mod_rewrite来做说明如何挂载一个模块。 重新编译mod_rewrite.so: 在apache的源码...
  • apache 模块的编写

    2010-08-10 18:00:00
    apache 模块的编写
  • Apache模块开发中请求处理

    千次阅读 2012-08-20 20:55:42
    最近持续在研究Apache的模块开发,为在Apache上的实验做准备。以下是介绍Apache Module中处理请求的过程,以及如何加入请求处理挂钩以及响应处理挂钩。尤其是几张图,很清晰地解释了Apache处理请求以及返回结果的...
  • 网站要对企业黄页分配二级...环境:Red Hat Enterprise Linux Server release 5.3 apache 2.2.16过程:首先确认www.xxx.com已经是泛域名查看apache的配置文件httpd.conf 是否已经加载了rewrite 模块, LoadModule rew
  • 开启apache rewrite模块的方法

    千次阅读 2012-06-20 09:18:33
    在ubuntu中,如果采用apt或tasksel进行apache的安装,则apache的配置文件会被分开放置到多个文件中。在ubuntu12.04中,apache的配置文件会分散放置在目录apache2下。在该目录下,mods-available中保存的是可用模块,...
  • apache 模块

    2012-08-07 21:59:38
     Apache提供了一些API函数,通过这些函数,apache可以将某一个已经编译好库文件加载到内存中,并根据模块中指定调用时机,在适当时候 进行调用。指定模块的调用时机是通过将某些函数向apache注册,并附带相关...
  • Apache是一款非常高效地WEB服务器,目前仍居全球最受欢迎的WEB服务器软件之首。Apache其功能强大之处在于我们... LemonLdap可以很棒地实现Apache的SSO功能,并且可以处理超过 20 万的用户请求。LemonLdap支持Java, PH
  • Apache DSO模块原理

    2016-09-27 11:24:08
    DSO究竟是什么?事实上DSO是Dynamic SharedObjects(动态共享目标)缩写,它是现代Unix派生出来操作系统都...因为Apache早就使用一个模块概念来扩展它功能并且在内部使用一个基于调度列表来链接扩展模块到Ap
  • apache安装模块工具apxs

    千次阅读 2018-01-07 16:46:18
    前言 ...apxs是apache管理模块的工具,它做是将mod.c生成mod.so,并使其能被apache加载,使用apxs前提:mod_so已被加载 + 查看相关信息 ## 注:以下httpd路径以自己服务器为准 ## 查看是否加载
  • 查看apache加载模块指令

    千次阅读 2017-06-18 14:29:25
    用cat /usr/local/apache2/config.nice可以查看Apache使用的模块
  • 关掉apache的缓存模块

    2014-10-17 11:07:00
    关掉apache的缓存模块 mac上开发网页,用apache搭建了一个本地的服务,访问本地服务的时候经常会...把apache的有cache的字段的模块全部屏蔽. #LoadModule cache_module libexec/apache2/mod_cach...
  • 10强大的Apache模块

    千次阅读 2014-12-16 15:15:29
    Apache 是世界上使用最为广泛的Web服务器,没有之一! 因为其具有高效、功能强大、超强可扩展性等特点。...LemonLdap 是 Apache 的一个实现了 Web SSO 的模块,可处理超过 20 万的用户。 website : http://wiki
  • 我的VPS自从上个月配置完后一直没有再优化配置了,由于之前担心VPS的内存不够用,所以在配置服务器参数时,更多考虑如何节省内存...既然是研究prefork模块,有必要提一提apache的多路处理模块(MPM)的基础知识。Apache2.
  • Apache加载模块说明

    千次阅读 2019-07-28 21:43:36
    LoadModule auth_basic_module modules/mod_...LoadModule auth_digest_module modules/mod_auth_digest.so #使用MD5用户验证模块 LoadModule authn_file_module modules/mod_authn_file.so #使用文本文件用...
  • Apache模块开发入门还是非常简单,只需简单几步骤就可以DIY出自己helloworld,本文测试系统为Ubuntu 12.04, 在该系统下只需安装好apacheapache2-threaded-dev这两个包就可以了。然后直接使用apxs2编译和...
  • apache的deflate模块

    2010-10-23 16:18:00
    如何安装apache的deflate压缩 Apache2 推荐使用 mod_deflate 压缩,mod_gzip适合apache1.x 关于mod_deflate的详细内容,可以参考http://httpd.apache.org/docs-2.0/mod/mod_deflate.html<br /><br /> ...
  • 想实践下Apache是如何运行cgi程序的,却发现先前编译安装Apache的时候,没有安装Apache的cgi模块。 附:CentOS6.x编译安装LAMP(2):编译安装 Apache2.2.25 此时,从 httpd.conf 文件中可看到如下模块被动态...
  • apache 模块编写(c++)

    千次阅读 2013-10-28 14:56:07
    注: 路径为:/home/xxx/ 工具为:apxs ...1、准备工作:安装apache对应...2、生成一个apache的模块框架:cd /home/xxx/; apache module:apxs -g -n mytest 这里的mytest就是apache模块的名字,但是实际生成的s
  • Apache2.0模块开发基础

    2012-12-06 18:19:49
    mod_helloworld是一个非常简单的模块,仅仅完成内容展示工作。但是它却可以展示编写Apache模块的基本框架。 基本开发环境及说明 我的开发环境是ubuntu 10.04 amd64 server,apache版本是2.2.15 1、源码安装...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,108
精华内容 7,643
关键字:

apache的模块