问题标签 [apache-modules]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
405 浏览

apache - 我正在开发一个 Apache 2 模块。为什么服务启动时会调用两次 create_server_config?

我这样编写模块代码:

当我重新启动 Apache 时,其中/var/log/syslog包含以下内容:

为什么create_server_config函数被调用两次?

我在这个函数中 malloc 了一些全局变量。这安全吗?

0 投票
0 回答
210 浏览

apache - 计算 apache 模块一天处理的请求数

我有一个我们使用的 apache 模块。我们想做的是测量模块在一天内服务的请求数。我知道我们可以 grep acess_log 或 error_log 并立即知道数字。我想在 apache 模块本身内部有某种计数器,并在每个请求中记录它。但这并不实用,因为 apache 的 stock 安装默认使用 5 个进程,因此 apache 模块将单独加载到每个进程中,因此计数器将毫无意义。这些辅助进程也可以根据需要重新启动。

有没有办法可以做到这一点?显然只有一个 httpd 进程在监听 80 端口,然后它将请求转发给一个辅助进程,对吧?如果是这样,我可以让该进程有一个计数器并将其递增并在转发时将其记录在每个请求中吗?

对此必须有更好的解决方案。

谢谢

-P

0 投票
1 回答
691 浏览

apache - 构建 apache 1.3 模块(特别是 mod_rewrite 和 mod_alias)

出于学习目的,我必须安装 1.3 版本的 apache 网络服务器。问题是我不知道如何构建模块,而且在安装目录中我看不到任何“模块”文件夹。

我想用我需要的一些模块重新编译和重新安装服务器,比如 mod_rewrite(支持 LDAP)和 mod_alias...你能告诉我怎么做吗?

不幸的是,文档主要针对 2.x 版本...

0 投票
0 回答
233 浏览

apache-modules - Apache模块在头部插入文本

对这件事很生气。我在这里尝试做一件非常简单的事情。

我尝试在 Apache 模块中的 html 文件的开头插入一个字符串,代码很简单。

问题是我可以在头部插入字符串,但与此同时,html文件末尾的字符串大小相同的内容将被截断。

有人知道为什么会这样吗?此 Apache 服务器作为代理运行。

0 投票
1 回答
1974 浏览

linux - mod_evasive 模块 DOSSystemCommand 和 DOSEmailNotify 选项不起作用

我已经在 Ubuntu 10.04 上安装了带有 mod_evasive 模块的 apache2,并且我想在 mod_evasive 将 IP 列入黑名单时收到电子邮件警报。为此,我在 /etc/apache2/conf.d/modevasive 中提到了我的电子邮件地址。当我从终端 /bin/echo 'test apache mod' 发送电子邮件时 | sudo /bin/mail -s 'test apache mod' vinish@example.com 我将收到并发送电子邮件

即使我在 DOSSystemCommand 下提到它,它对我也不起作用

如果尝试使用 perl 脚本阻止网站,并且我还提到了日志文件 /etc/apache2/conf.d/modevasive 文件及其工作文件,这意味着模块以某种方式工作 DOSSystemCommand 和 DOSEmailNotify 选项不起作用

0 投票
2 回答
19978 浏览

apache - URL 重写似乎不起作用。阿帕奇2

我想要它,这样当用户去到 它时http://mysite.com/home,它会将他重定向到http://mysite.com/page.php?id=home. 这是我在 .htaccess 中放入的内容,但它似乎不起作用。

它只是将我发送到 /home 目录,并带有一个不错的 404。感谢您的帮助。谢谢。

编辑:

我已经尝试了一些我知道工作的重写,所以现在我确定这不是我的问题。我检查了一下phpinfo(),是的,mod rewrite 正在运行,我用 LAMP 设置了 apache2,我正在运行最新版本的 Linux Mint。

0 投票
0 回答
251 浏览

apache-modules - 在 C++ 模块中使用 Xerces 库时 Apache 无法启动

我编写了一个 C++ 模块来调用 Xerces C++ XML 库来解析 XML 文件。我无法通过这些更改启动 httpd.exe。以下是详细信息-

a) Apache 服务器版本:httpd-2.4.4-win64 b) Xerces 版本:xerces-c-3.1.1-x86_64-windows-vc-10.0 c) 开发环境:Visual Studio 2010 with SP1

以下是我在 Visual Studio 中所做的设置,以便 C++ 模块引用 Xerces 库: 1. Additional Include Directories = E:\xerces-c-3.1.1-x86_64-windows-vc-10.0\xerces-c- 3.1.1-x86_64-windows-vc-10.0\包括

  1. 附加依赖项 = xerces-c_3.lib 和 xerces-c_static_3.lib

  2. 其他库目录 = E:\xerces-c-3.1.1-x86_64-windows-vc-10.0\xerces-c-3.1.1-x86_64-windows-vc-10.0\lib

  3. 调试 -> 环境:PATH=E:\xerces-c-3.1.1-x86_64-windows-vc-10.0\xerces-c-3.1.1-x86_64-windows-vc-10.0\bin

  4. 在操作系统环境变量中,将路径 E:\xerces-c-3.1.1-x86_64-windows-vc-10.0\xerces-c-3.1.1-x86_64-windows-vc-10.0\bin 添加到环境变量中小路

  5. 我的 C++ 模块中调用 Xerces 库例程的代码如下所示 -

    尝试 { XMLPlatformUtils::Initialize(); // 初始化 Xerces 基础结构 } catch( XMLException& e ) { char* message = XMLString::transcode( e.getMessage() ); XMLString::release( &message ); } XMLPlatformUtils::Terminate();

  6. 在 httpd.conf 文件中添加了以下内容 - LoadModule filter_module modules/XercesDLL.dll AddOutputFilterByType TagFilter text/html text/plain text/css

  7. 如果我尝试从命令提示符启动 httpd.exe,我会看到以下错误 -

    httpd.exe httpd.exe:E:/httpd-2.4.4-win64/Apache24/conf/httpd.conf 第 172 行的语法错误:无法将模块/XercesDLL.dll 加载到服务器中:找不到指定的模块.

即使我在步骤 6 中注释掉上面的 C++ 代码,Apache 仍然无法启动。这意味着 Apache 无法加载我正在使用的 Xerces 库版本,无论我调用该库的方式如何。

但是,如果我编写一个调用上述 Xerces 库版本的独立 DLL,并从 EXE 调用这个 DLL,那么我就能够成功地解析 XML。这意味着,Xerces 库由于某种原因无法仅由 Apache 服务器加载。

我认为它与 C 到 C++ 的链接有关,不确定。

非常感谢任何帮助。

谢谢。

0 投票
1 回答
466 浏览

http-headers - apache2模块自定义http头

我正在尝试重定向非法访问并将用户带到登录页面,如果用户获得许可并继续访问原始,我需要保留原始请求 url。我尝试将原始 url 写入 http 标头区域,但我无法从客户端检索此数据。

apache2 或其他模块是否忽略了自定义 http heaer?或者我只是想念什么?

(顺便说一句:我不喜欢使用查询字符串,想想也许下一页仍然是重定向)

代码示例:

0 投票
1 回答
143 浏览

php - 在 apache 上使用 flush 作为 cgi

我在 apache 网络服务器上使用 PHP 作为 CGI。那时我正在使用脚本写入文本文件。但是flush() 没有用。

为了使 flush() 工作,我将 php 更改为“apache 模块”。现在刷新工作,但我无法再访问文件(权限被拒绝)。

如何同时使用刷新和访问我之前使用的文件?

0 投票
1 回答
75 浏览

c - Apache 模块,确定传递给函数的配置文件的名称


不,我不是问在哪里可以找到 httpd.conf


我已经获得了我需要修改的模块的代码,因为我找不到任何关于我要问你的主题的好的文档。

在这段代码中有一个 cfg 传入。我想确定传入的这个特定 cfg 文件的名称,以便记录该名称。我该怎么做呢?这个函数是在我的 receiver_directives[] 中设置的。

非常感谢您的帮助!