- 浏览: 347200 次
- 来自: NA
文章分类
最新评论
-
上官车月:
实验成功,转载了
Java获取请求客户端的真实IP地址 -
url_nc:
very good
css教程–十步学会用css建站(全) -
hiveer:
楼主我想问能不能不在class里面定义get_binding ...
强大的ruby模版:ERB -
ilovebaby0530:
修改密码后需要 FLUSH PRIVILEGES;
绿色版mysql安装步骤 -
albrich:
你这个方法也是不行的,得到的仍然是内网的IP
Java获取请求客户端的真实IP地址
下面是使用apxs 工具给apache添加模块
添加的模块:
LoadModule proxy_module libexec/mod_proxy.so
LoadModule rewrite_module libexec/mod_rewrite.so
LoadModule headers_module libexec/mod_headers.so
添加方法:
1. 进入apache1.3.33 源文件modules目录
cd apache_1.3.33/src/modules/
2. 安装 proxy_module
> cd proxy
> /user/local/apache/bin/apxs -i -a -c *.c
3. 安装 rewrite_module
> cd standard
> /user/local/apache/bin/apxs -i -a -c mod_rewrite.c
4. 安装 headers_module
> cd standard
> /user/local/apache/bin/apxs -i -a -c mod_headers.c
但是,用这种方法添加的proxy不可用,提示错误:
/apache/httpd/bin/apachectl configtest
httpd: Syntax error on line 58 of /apache/httpd-2.2.3/conf/httpd.conf:
Cannot load /apache/httpd-2.2.3/modules/mod_proxy.so into server:
/apache/httpd-2.2.3/modules/mod_proxy.so:
undefined
symbol:
proxy_lb_workers
所以,应该这样:
在Linux系统下,需要给已经运行的Apache增加mod_proxy模块,编译的时候应该这样:
apxs -c -i mod_proxy.c proxy_util.c
否则你可能会收到这样的错误信息
[root@server1 proxy]# /apache/httpd/bin/apachectl configtest
httpd: Syntax error on line 58 of /apache/httpd-2.2.3/conf/httpd.conf:
Cannot load /apache/httpd-2.2.3/modules/mod_proxy.so into server:
/apache/httpd-2.2.3/modules/mod_proxy.so: undefined
symbol:
proxy_lb_workers
如果你还加载了mod_proxy_ajp.so那应该
apxs -c -i mod_proxy_ajp.c ajp*.c
[root@server1 proxy]# /apache/httpd/bin/apachectl configtest
httpd: Syntax error on line 58 of /apache/httpd-2.2.3/conf/httpd.conf:
Cannot load /apache/httpd-2.2.3/modules/mod_proxy_ajp.so into server:
/apache/httpd-2.2.3/modules/mod_proxy_ajp.so: undefined
symbol:
ajp_msg_reset
这是为什么呢?请看
apxs - Apache 扩展工具
apxs
是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so
提供的LoadModule
指令在运行时加载到Apache服务器中。
因此,要使用这个扩展机制,你的平台必须支持DSO特性,而且Apache httpd
必须内建了mod_so
模块。apxs
工具能自动探测是否具备这样的条件,你也可以自己用这个命令手动探测:
$ httpd -l
该命令的输出列表中应该有mod_so
模块。如果所有这些条件均已具备,则可以很容易地借助apxs
安装你自己的DSO模块以扩展Apache服务器的功能:
$ apxs -i -a -c mod_foo.c
gcc -fpic -DSHARED_MODULE -I/path/to/apache/include -c mod_foo.c
ld -Bshareable -o mod_foo.so mod_foo.o
cp mod_foo.so /path/to/apache/modules/mod_foo.so
chmod 755 /path/to/apache/modules/mod_foo.so
[activating module 'foo' in /path/to/apache/etc/httpd.conf]
$ apachectl restart
/path/to/apache/sbin/apachectl restart: httpd not running, trying to start
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module
/path/to/apache/sbin/apachectl restart: httpd started
$ _
其中的参数files
可以是任何C源程序文件(.c)、目标代码文件(.o)、甚至是一个库(.a)。apxs
工具会根据其后缀自动编译C源程序或者连接目标代码和库。但是,使用预编译的目标代码时,必须保证它们是地址独立代码(PIC),使之能被动态地加载。如果使用GCC编译,则应该使用 -fpic
参数;如果使用其他C编译器,则应该查阅其手册,为apxs
使用相应的编译参数。
有关Apache对DSO的支持的详细信息,可以阅读mod_so
文档,或者直接阅读src/modules/standard/mod_so.c
源程序。
语法
apxs
-g
[ -S
name
=value
] -n
modname
apxs
-q
[ -S
name
=value
] query
...
apxs
-c
[ -S
name
=value
] [ -o
dsofile
] [ -I
incdir
] [ -D
name
=value
] [ -L
libdir
] [ -l
libname
] [ -Wc,
compiler-flags
] [ -Wl,
linker-flags
] files
...
apxs
-i
[ -S
name
=value
] [ -n
modname
] [ -a
] [ -A
] dso-file
...
apxs
-e
[ -S
name
=value
] [ -n
modname
] [ -a
] [ -A
] dso-file
...
选项
一般选项
-n modname
-i
(安装)和 -g
(模板生成)选项的模块名称。对 -g
选项,它是必须的;对 -i
选项,apxs
工具会根据源代码判断,或(在失败的情况下)按文件名推测出这个模块的名称。 查询选项
-q
apxs
设置的信息。该选项的query
参数可以是下列一个或多个字符串:CC
, CFLAGS
, CFLAGS_SHLIB
, INCLUDEDIR
, LD_SHLIB
, LDFLAGS_SHLIB
, LIBEXECDIR
, LIBS_SHLIB
, SBINDIR
, SYSCONFDIR
, TARGET
。
这个参数用于手动查询某些设置。比如,要手动处理Apache的C头文件,可以在Makefile中使用:
INC=-I`apxs -q INCLUDEDIR`
配置选项
-S name
=value
模板生成选项
-g
-n
)和其中的两个文件:一个是名为mod_name
.c
的样板模块源程序,可以用来建立你自己的模块,或是学习使用apxs机制的良好开端;另一个则是对应的Makefile
,用于编译和安装此模块。 DSO编译选项
-c
-o
选项,则此输出文件名由files
中的第一个文件名推测得到,也就是默认为mod_name
.so
。 -o dsofile
mod_unknown.so
。 -D name
=value
-I incdir
-L libdir
-l libname
-Wc,compiler-flags
libtool --mode=compile
中附加compiler-flags
,以增加编译器特有的选项。 -Wl,linker-flags
libtool --mode=link
中附加linker-flags
,以增加连接器特有的选项。 DSO的安装和配置选项
-i
-a
LoadModule
行到httpd.conf
文件中,以激活此模块,或者,如果此行已经存在,则启用之。 -A
-a
选项类似,但是它增加的LoadModule
命令有一个井号前缀(#
),即此模块已经准备就绪但尚未启用。 -e
-a
和 -A
选项配合使用,与 -i
操作类似,修改Apache的httpd.conf
文件,但是并不安装此模块。 举例
假设有一个扩展Apache功能的模块mod_foo.c
,使用下列命令,可以将C源程序编译为共享模块,以在运行时加载到Apache服务器中:
$ apxs -c mod_foo.c
/path/to/libtool --mode=compile gcc ... -c mod_foo.c
/path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
$ _
然后,必须修改Apache的配置,以确保有一个LoadModule
指令来加载此共享对象。为了简化这一步骤,apxs
可以自动进行该操作,以安装此共享对象到"modules"目录,并更新httpd.conf
文件,命令如下:
$ apxs -i -a mod_foo.la
/path/to/instdso.sh mod_foo.la /path/to/apache/modules
/path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules ... chmod 755 /path/to/apache/modules/mod_foo.so
[activating module 'foo' in /path/to/apache/conf/httpd.conf]
$ _
如果配置文件中尚不存在,会增加下列的行:
LoadModule foo_module modules/mod_foo.so
如果你希望默认禁用此模块,可以使用 -A
选项,即:
$ apxs -i -A mod_foo.c
要快速测试apxs机制,可以建立一个Apache模块样板及其对应的Makefile :
$ apxs -g -n foo
Creating [DIR] foo
Creating [FILE] foo/Makefile
Creating [FILE] foo/modules.mk
Creating [FILE] foo/mod_foo.c
Creating [FILE] foo/.deps
$ _
然后,立即可以编译此样板模块为共享对象并加载到Apache服务器中:
$ cd foo
$ make all reload
apxs -c mod_foo.c
/path/to/libtool --mode=compile gcc ... -c mod_foo.c
/path/to/libtool --mode=link gcc ... -o mod_foo.la mod_foo.slo
apxs -i -a -n "foo" mod_foo.la
/path/to/instdso.sh mod_foo.la /path/to/apache/modules
/path/to/libtool --mode=install cp mod_foo.la /path/to/apache/modules ... chmod 755 /path/to/apache/modules/mod_foo.so
[activating module 'foo' in /path/to/apache/conf/httpd.conf]
apachectl restart
/path/to/apache/sbin/apachectl restart: httpd not running, trying to start
[Tue Mar 31 11:27:55 1998] [debug] mod_so.c(303): loaded module foo_module
/path/to/apache/sbin/apachectl restart: httpd started
$ _
发表评论
-
[转]电子商务名词介绍
2010-10-19 14:11 1447电子商务介绍: 概念:电子商务,英文名Elect ... -
[转]如何用数字判断一个网站
2010-10-19 14:05 12051.访问量:alexa,chinaz查询工具。 ... -
apache的ab命令做压力测试
2009-11-23 17:57 210421. 最基本的关心两个选项 -c -n 例: ./ab -c ... -
什么是Session, 什么是Cookie?
2009-09-22 15:42 4053什么是Session, 什么是Cookie? Session ... -
HTTP协议分析之一:HTTP协议详解
2009-07-20 13:41 2947HTTP(HyperTextTransferProtocol) ... -
HTTP分析之二:标准状态代码
2009-07-20 13:40 1312Number Description ... -
一个ApacheBench (ab) 的简单的 httpd 压力测试例子+结果说明
2009-01-21 00:14 1925/* 在这个例子的一开始,我执行了这样一个命令 ab ... -
请问在jsp页面里怎么得到本页面的url
2009-01-19 15:07 1948假如该页面是http://a.jsp,, 如何在a ... -
HTTP 状态代码
2008-12-09 13:20 934HTTP 状态代码 如果某项请求发送到您的服务器要求显示您 ... -
文字自动换行
2008-10-20 00:59 1628对想让其中文字自动换行的DIV添加以下样式 C代码 ... -
Apache
2008-10-17 19:05 1247SOS,spark!xxx网站打开奇慢,快点给看看,赶紧帮个忙 ... -
大型网站架构演变和知识体系
2008-10-10 11:03 1316之前也有一些介绍大型网站架构演变的文章,例如 LiveJo ... -
最简单的表格样式写法
2008-10-07 02:34 2607<style> table{ bor ... -
轻松制作Favicon
2008-09-05 15:38 1643看到那些Web2.0站点的图标了吧,比如饭否 ( ),鲜果 ... -
网页head区常用代码
2008-08-26 04:25 1060公司版权注释 <!--- the site is de ... -
java获取msn好友列表
2008-08-12 01:11 2178基于 JMSN 写了一个 MsnHelper 。借助getBu ... -
在myeclipse环境下创建天乙论坛项目
2008-08-07 15:35 21811,首先下载bbscs_8_0_0.rar,解压缩,比如我解 ... -
Java获取请求客户端的真实IP地址
2008-08-07 12:20 6880通常通过request.getRemoteAddr() 取得 ... -
好产品靠的是设计(中文版)
2008-08-06 12:23 1409我从不认为好的产品是偶然设计出来的,我在几乎所有好的产品诞生的 ... -
使用onerror属性解决图片红××的问题
2008-08-06 11:02 2068使用onerror属性 <a href="(k ...
相关推荐
mod_objc 部分:H's Computer History Museum ###mod_objc 这是我在 ... 所以我们不得不坚持使用 bundle(保持对共享库的引用)。 这从未在生产中用于任何事情。 而且你也不应该使用它 :-) 甚至可能不再编译了。样本
本系统具有以下功能: 1、本系统包含:文章模块、新闻模块、下载模块、FLASH欣赏模块、图片管理模块、用户管理模块 2、本系统将对以下部分生成html:文章页面、文章分类页面、下载页面、下载分类页面、FLASH页面、...
对于使用此程序给您造成的任何损失,本人概不负责! MySQL数据库默认用户名:root,密码root (为什么很多人看不到呢!!!) ====phpStudy提示没安装Zend或Zend Optimizer not Installed====== phpStudy是自带Zend ...
对于使用此程序给您造成的任何损失,本人概不负责! MySQL数据库默认用户名:root,密码root (为什么很多人看不到呢!!!) ====phpStudy提示没安装Zend或Zend Optimizer not Installed====== phpStudy是自带Zend ...
并且,如果地址在硬盘上而不是在 RAM 中,那么操作系统将暂时停止您的进程,将其他内存转存到硬盘中,从硬盘上加载被请求的内存,然后再重新启动您的进程。这样,每个进程都获得了自己可以使用的地址空间,可以访问...
- **空模块处理**:当请求的模块不存在时,默认执行的处理逻辑。 **5.6 模块分组** - **模块分组管理**:将多个相关的模块组织在一起,便于管理和访问。 **5.7 URL 伪静态** - **伪静态设置**:通过 URL 规则...
提到“Zookeeper”,我们不得不提及Apache ZooKeeper,这是一个分布式的,开放源码的协调服务,用于管理大型分布式系统中的配置信息、命名服务、分布式同步和组服务。Zookeeper在云原生环境中扮演着至关重要的角色,...
还有Apache模块方式,Apache模块方式是通过Apache扩展模块来提供SAPI支持。除此之外,PHP还支持其他SAPI,如嵌入式、FastCGI等。 SAPI的实现对于PHP的性能有重要影响。比如,FastCGI是一种常用于高性能Web服务器的...
当我们谈到Scala与Spark的结合时,我们不得不提Spark的DataFrame和DataSet API。DataFrame是Spark SQL模块的核心,它提供了一种以表格形式处理数据的方式,支持SQL查询和多种数据源。DataFrame API在Scala中非常直观...
中,那么操作系统将暂时停止您的进程,将其他内存转存到硬盘中,从硬盘上加载被请求的内存,然后再重新启动您的进程。这样,每个进程都获得了自己可以使用的地址空间,可以访问比您物理上安装的内存更多的内存。 ...
1:外文原文 Struts——an open-source MVC implementation This article introduces Struts, a Model-View-Controller implementation that uses servlets and JavaServer Pages (JSP) technology....
� Google 提供了一套 Java 核心包 (J2SE 5,J2SE 6) 的有限子集,尚不承诺遵守 Java 任何 Java 规范 , 可能会造 成J ava 阵营的进一步分裂。 � 现有应用完善度不太够,需要的开发工作量较大。--------------------...
例如,如果BigSecret采用Apache 2.0,那么使用者需保留原有版权信息,不得用于商业目的(除非许可协议明确允许)。 总的来说,BigSecret项目提供了一个深入了解Java编程、开源软件开发以及版本控制实践的宝贵资源。...
让我们看一看 echo "$myphonebook[0]"; // sbabu echo "$myphonebook[1]"; // 5348 其他一些对数组或哈希表有用的函数包括sort(),next(),prev()和each()。 对象 使用new语句产生一个对象: ...