【问题标题】:Apache Ignoring Custom ModuleApache忽略自定义模块
【发布时间】:2017-07-19 16:03:03
【问题描述】:

所以我正在尝试制作自己的 apache 模块。现在我试图让它返回一个 403 只是为了测试它,但似乎 apache 只是完全忽略了该模块并返回默认页面。这是我的代码的相关部分:

static int request_hook(request_rec* r){
  return HTTP_FORBIDDEN;
}

/* ********************************************
    Register module to Apache
   ******************************************** */

static void register_hooks(apr_pool_t *p)
{
    // We want to hook first so we can issue a deny ASAP if needed
    ap_hook_log_transaction( request_hook, NULL, NULL, APR_HOOK_REALLY_FIRST);
}

module AP_MODULE_DECLARE_DATA my_module = {
    STANDARD20_MODULE_STUFF,
    NULL,              /* dir config creater */
    NULL,                       /* dir merger --- default is to override */
    NULL,                       /* server config */
    NULL,                       /* merge server configs */
    NULL,                   /* command apr_table_t */
    register_hooks              /* register hooks */
};

而我的 apache 配置文件是这样的:

<VirtualHost *:80>
        DocumentRoot /var/www/html
        SetHandler      my_module
</VirtualHost>

它是通过做编译的

sudo apxs -i -a -c my_module.c && sudo service apache2 restart

【问题讨论】:

  • 您需要告诉 Apache 在 Apache 实例级别而不是网站级别加载模块。根据您安装的 Apache,您可能有一个 loadmodules.conf 文件,其中包含 Apache 应加载的所有模块。否则你可以添加到你的 HTTPD.conf "LoadModule module_name /path/on/your/disk/to/moduel.so"
  • 我在 /etc/apache2/mods-enabled 中有 my_module.load 文件,如果我在 vhost 配置中手动加载模块,我会在日志中看到“my_module 已加载”。
  • 你的模块在 403 被禁止的情况下应该做什么? 403 被禁止的东西是 Apache 核心的一部分,如果我没记错的话,你所能做的就是自定义你的 403 错误页面。
  • 我的目标是让 apache 在启用模块时返回 403 禁止响应,而不是 HTTP 200 响应。
  • 所以您正在有效地尝试创建自己的维护模块?如果是这样,这个页面可能是一个很好的指南,告诉你如何在不编写模块的情况下做到这一点shellhacks.com/redirect-site-maintenance-page-apache-htaccess

标签: apache apache-modules


【解决方案1】:

已修复。问题出在函数上:

ap_hook_log_transaction( request_hook, NULL, NULL, APR_HOOK_REALLY_FIRST);

应该是:

ap_hook_handler( request_hook, NULL, NULL, APR_HOOK_REALLY_FIRST);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 2011-03-31
    • 2020-01-09
    • 1970-01-01
    相关资源
    最近更新 更多