存档

文章标签 ‘apache’

[notice] child pid 19818 exit signal Bus error (7)

2010年1月7日 1 条评论

apache logs:
[Thu Dec 31 12:27:41 2009] [notice] child pid 19818 exit signal Bus error (7)

The first error “Bus Error” is caused by someones (possibly CGI) program crashing. A bus error happens when someone wrote a C program for Intel and re-compiled it for another processor like PPC or Mips that does not support misalligned memory access. Really all it means is someone is running buggy software on your server machine.
The second error could also be a CGI program that hangs longer than the server’s timeout, so its killed. Probably another buggy program.

That sounds like bad RAM or maybe a bad chassis. I would try and build something other the Apache and see if you get similar errors. If they persist then I would ask for a RAM swap to be done and check again. If that does not fix it then request a chassis swap.

There is a small chance this could be OS related if you are running a different Kernel release compared to the OS default or have many patches installed on it but I am leaning towards a hardware issue.

http://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html

Standard Signals

       Linux supports the standard signals listed below.  Several signal numbers are
       architecture-dependent, as indicated in the “Value” column.  (Where three
       values are given, the first one is usually valid for alpha and sparc, the
       middle one for ix86, ia64, ppc, s390, arm and sh, and the last one for mips.
       A – denotes that a signal is absent on the corresponding architecture.)

       First the signals described in the original POSIX.1-1990 standard.

       Signal     Value     Action   Comment

       ———————————————————————-
       SIGHUP        1       Term    Hangup detected on controlling terminal
                                     or death of controlling process
       SIGINT        2       Term    Interrupt from keyboard
       SIGQUIT       3       Core    Quit from keyboard
       SIGILL        4       Core    Illegal Instruction
       SIGABRT       6       Core    Abort signal from abort(3)
       SIGFPE        8       Core    Floating point exception
       SIGKILL       9       Term    Kill signal
       SIGSEGV      11       Core    Invalid memory reference
       SIGPIPE      13       Term    Broken pipe: write to pipe with no
                                     readers
       SIGALRM      14       Term    Timer signal from alarm(2)
       SIGTERM      15       Term    Termination signal
       SIGUSR1   30,10,16    Term    User-defined signal 1
       SIGUSR2   31,12,17    Term    User-defined signal 2
       SIGCHLD   20,17,18    Ign     Child stopped or terminated
       SIGCONT   19,18,25    Cont    Continue if stopped
       SIGSTOP   17,19,23    Stop    Stop process
       SIGTSTP   18,20,24    Stop    Stop typed at tty
       SIGTTIN   21,21,26    Stop    tty input for background process
       SIGTTOU   22,22,27    Stop    tty output for background process

       The signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.

       Next the signals not in the POSIX.1-1990 standard but described in SUSv2 and
       POSIX.1-2001.

       Signal       Value     Action   Comment
       ——————————————————————–
       SIGBUS      10,7,10     Core    Bus error (bad memory access)
       SIGPOLL                 Term    Pollable event (Sys V).
                                       Synonym for SIGIO
       SIGPROF     27,27,29    Term    Profiling timer expired
       SIGSYS      12,-,12     Core    Bad argument to routine (SVr4)
       SIGTRAP        5        Core    Trace/breakpoint trap
       SIGURG      16,23,21    Ign     Urgent condition on socket (4.2BSD)
       SIGVTALRM   26,26,28    Term    Virtual alarm clock (4.2BSD)
       SIGXCPU     24,24,30    Core    CPU time limit exceeded (4.2BSD)
       SIGXFSZ     25,25,31    Core    File size limit exceeded (4.2BSD)

分类: OpenSource 标签:

apache日志中 X-Forwarded-For 参数的设定

2009年2月23日 评论已被关闭

apache日志中默认有%h来指定来访客户端你的ip地址,但是如果客户端使用了代理上网则%h获得的ip地址会不准。

apache 日志中可以设定 X-Forwarded-For 参数来获取客户端真实的ip地址

对于使用了反向代理的客户端,跟踪真实的ip地址
X-Forwarded-For header is supported by most proxy servers, including Squid,[1] Apache mod_proxy,[2] Pound,[3] Varnish cache,[4] IronPort Web Security Appliance,[5] Radware AppXcel, F5 Big-IP, [6] Blue Coat ProxySG, Cisco Cache Engine, Phion Airlock, Finjan’s Vital Security, NetApp NetCache, jetNEXUS, Crescendo Networks’ Maestro, and Microsoft ISA Server 2004/2006 with Winfrasoft X-Forwarded-For for ISA Server.[7]
X-Forwarded-For header logging is supported by many web servers including Apache and Microsoft IIS 6.0 & 7.0 with the addition of Winfrasoft X-Forwarded-For for IIS.[7]

##########################################
this is a apache’s seting for X-Forwarded-For (f5):

%{X-Forwarded-For}i

LogFormat “%{X-Forwarder-For}i %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” f5_forwarder
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined

SetEnvIf X-Forwarder-For “^.*\..*\..*\..*” is-forwarder

CustomLog logs/access_log combined env=!is-forwarder
CustomLog logs/access_log f5_forwarder env=is-forwarder

关于X-Forwarded-For的详细说明,可见http://en.wikipedia.org/wiki/X-Forwarded-For
几点说明:
1、使用正向代理的客户端,为了安全因素,在连接外部网络之前内部代理(网关)会去掉原有的X-Forwarded-For信息,这种情况server端可以信任X-Forwarded-For信息,表明连接出自某个内部网络。
2、如果server端使用了反向代理(比如server在7层代理的后面),这种情况就不能完全信任X-Forwarded-For信息,最好使用一个白名单来进行控制。

3、如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串ip值,究竟哪个才是真正的用户端的真实IP呢?
X-Forwarded-For: client1, proxy1, proxy2
X-Forwarded-For会取得第一个非unknown的有效IP字符串。

分类: OpenSource 标签:

apache 与resin2或者resin3 的整合配置

2008年6月28日 评论已被关闭

apached的下载及编译:
http://www.apache.org/
这里选择动态加载模块,如果需要其他模块的可以自行添加。

./configure –prefix=/home/2hei/apache2 –enable-module=so
make
make install

resin的下载及编译:
http://www.caucho.com/download  下载resin2的版本或者resin3的版本
./configure
make
make install

修改apache的配置:默认安装resin后会给httpd.conf写入一些东西,
但是对于resin2不好用,网上的一些配置也没有找到真正能用得,google了许久,下面的终于可以使用了。

#httpd.conf for resin2.1.*

#
# mod_caucho Resin Configuration
#

LoadModule caucho_module /home/2hei/apache2/modules/mod_caucho.so
#CauchoConfigFile /home/2hei/soft/resin/conf/resin.conf
#CauchoServerRoot /home/2hei/apache2
CauchoHost localhost 6802
AddHandler caucho-request jsp
<Location /servlet/*>
   SetHandler caucho-request
</Location>

对于resin3,安装后的配置基本上可以使用。

httpd.conf   for resin3.1.6
#
# mod_caucho Resin Configuration
#

LoadModule caucho_module /home/2hei/apache2/modules/mod_caucho.so

ResinConfigServer localhost 6800
CauchoConfigCacheDirectory /tmp
CauchoStatus yes

也可以配置resin多台主机的负载,或者一台resin上多个srun端口。
如:
<caucho.com>
<http-server>
  <http id=’a’ port=’80’/>
  <srun id=’a’ port=’6802′ host=’192.168.0.1′ srun-index=’1’/>

  <http id=’b’ port=’80’/>
  <srun id=’b’ port=’6802′ host=’192.168.0.2′ srun-index=’2’/>

  <http id=’c’ port=’80’/>
  <srun id=’c’ port=’6802′ host=’192.168.0.3′ srun-index=’3’/>

  <!– enable tcp-store for all hosts/web-apps –>
  <session-config>
    <tcp-store/>
    <save-on-shutdown/>
  </session-config>
  …
</http-server>
</caucho.com>
或者:
<caucho.com>
<http-server>

  <srun id=”a” host=’2hei.net’ port=’6802′ srun-index=’1’/>
  <srun id=”b” host=’2hei.net’ port=’6803′ srun-index=’2’/>
 
</http-server>
</caucho.com>

可以把resin的web-app的doc指向apache的发布目录,如htodoc下面:

接着自己可以写一个jsp页面测试一下:
新建test.jsp 添加如下: 1+1=<%=1+1%>
http://testiP:8080/test.jsp
http://testiP/test.jsp
如果起作用表示整合成功。
http://testiP/caucho_status看看jvm状态。
 

分类: OpenSource, resin 标签: ,

Apache/resin log输出格式

2008年3月19日 评论已被关闭

Apache 一般有两种日志格式:
通用日志格式(Common Log Format) 和 组合日志格式(Combined Log Format)

http.conf中默认格式如下:
LogFormat “%h %l %u %t \”%r\” %>s %b” common
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-agent}i\”” combined

也可以使用自定义,这里使用`分隔 日志参数

%h`%l`%u`%{%Y-%m-%d %H:%M:%S}t`%r`%s`%b`%{Referer}i`%{User-Agent}i`%{X-Up-Calling-Line-ID}i

输出结果如下:
127.0.0.1 – frank [10/Oct/2000:13:55:36 -0700] “GET /apache_pb.gif HTTP/1.0” 200 2326
127.0.0.1 – frank [10/Oct/2000:13:55:36 -0700] “GET /apache_pb.gif HTTP/1.0” 200 2326 “http://www.example.com/start.html” “Mozilla/4.08 [en] (Win98; I ;Nav)”
172.16.0.115`-`-`2008-03-13 11:00:03`GET /logo.gif HTTP/1.1`200`2893`http://172.16.0.252/index.jsp `Opera/9.26 (Windows NT 5.1; U; zh-cn)`-

%h  这是发送请求到服务器的客户的IP地址,如果客户和服务器之间存在代理,那么记录中的这个IP地址就是那个代理的IP地址,而不是客户机的真实IP地址。
%l 这是由客户端identd进程判断的RFC1413身份(identity),输出中的符号”-“表示此处的信息无效。除非在严格控制的内部网络中,此信息通常很不可靠,不应该被使用。只有在将IdentityCheck指令设为 On 时,Apache才会试图得到这项信息。
%u 这是HTTP认证系统得到的访问该网页的客户标识(userid),环境变量REMOTE_USER会被设为该值并提供给CGI脚本。如果状态码是401,表示客户未通过认证,则此值没有意义。如果网页没有设置密码保护,则此项将是”-“。

%{%Y-%m-%d %H:%M:%S}t
这是服务器完成请求处理时的时间。
其格式是:
[日/月/年:时:分:秒 时区]
日 = 2数字
月 = 3字母
年 = 4数字
时 = 2数字
分 = 2数字
秒 = 2数字
时区 = (+|-)4数字
可以在格式字符串中使用 %{format}t 来改变时间的输出形式,其中的format与C标准库中的strftime()用法相同。
如:%Y-%m-%d %H:%M:%S — 2008-03-13 11:00:03

%r 引号中是客户端发出的包含许多有用信息的请求行。可以看出,该客户的动作是GET ,请求的资源是/logo.gif ,使用的协议是HTTP/1.1 。另外,还可以记录其他信息,如:格式字符串”%m %U%q %H”会记录动作、路径、查询字符串、协议,其输出和”%r”一样。

%s 这是服务器返回给客户端的状态码。这个信息非常有价值,因为它指示了请求的结果,或者是被成功响应了(以2开头),或者被重定向了(以3开头),或者出错了(以4开头),或者产生了服务器端错误(以5开头)。
服务器响应吗列表 :
  Successful 2xx
200 OK …..
201 Created
202 Accepted
203 Non-Auth
204 No Conte
205 Reset Co
206 Partial
Redirection 3xx
300 Multiple
301 Moved Pe
302 Found ..
303 See Othe
304 Not Modi
305 Use Prox
306 (Unused)
307 Temporar
  Client Error 4x
400 Bad Req
401 Unautho
402 Payment
403 Forbidd
404 Not Fou
405 Method
406 Not Acc
407 Proxy A
408 Request
409 Conflic
410 Gone ..
411 Length
412 Precond
413 Request
414 Request
415 Unsuppo
416 Request
417 Expecta
  Server Error 5x
500 Internal
501 Not Impl
502 Bad Gate
503 Service
504 Gateway
505 HTTP Ver

%b 最后这项是返回给客户端的不包括响应头的字节数。如果没有信息返回,则此项应该是”-“,如果希望记录为”0″的形式,就应该用%B 。

%{Referer}i
“Referer”请求头。此项指明了该请求是被从哪个网页提交过来的,http://172.16.0.252/index.jsp 这个网页应该包含有/logo.gif 或者其连接。

%{User-Agent}i
“User-Agent”请求头。此项是客户端提供的浏览器识别信息。如:(Opera/9.26 (Windows NT 5.1; U; zh-cn)   Mozilla/4.08 [en] (Win98; I ;Nav )

%{X-Up-Calling-Line-ID}i
如果使用手机访问,并且移动(联通)网关可以返回访问者的手机号码。

分类: OpenSource, resin 标签: , ,

You don’t have permission to access / on this server error 之解决

2008年3月18日 评论已被关闭

配置好的 apache 虚拟主机,已经跑着一个web应用,现在绑定了另外一个域名:

环境: apache2 + php5

vi http.conf

NameVirtualHost *:8080

<VirtualHost www.abc.net:8080>
ServerName www.abc.net
ServerAdmin test@abc.net
DocumentRoot /usr/local/apache/htdocs/2hei.net
</VirtualHost>

<VirtualHost www.asd.net:8080>
ServerName www.asd.net
ServerAdmin postmaster@asd.net
DocumentRoot /home/asd/htdocs
</VirtualHost>

访问网站:www.asd.net:8080  系统提示:

You don’t have permission to access / on this server error

403(禁止)

原因是默认的apache配置里面已经设定了目录访问权限
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

在设定NameVirtualHost时,也是遵循这个规则,
所以应该在 VirtualHost 中单独指定发布目录的目录访问权限。

NameVirtualHost *:8080

<VirtualHost www.abc.net:8080>
ServerName www.abc.net
ServerAdmin test@abc.net
DocumentRoot /usr/local/apache/htdocs/2hei.net
</VirtualHost>

<VirtualHost www.asd.net:8080>
ServerName www.asd.net
ServerAdmin postmaster@asd.net
DocumentRoot /home/abc/htdocs
<Directory “/home/asd/htdocs”>
Options  FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>

接着访问你的网站:www.asd.net:8080  应该可以了。

 

分类: OpenSource 标签: ,

apache2使用dosevasive防dos攻击

2007年11月27日 评论已被关闭

Dosevasive 可以用在apache1.3.* apache2以上,能够有效的预防dos攻击,

下载地址:http://mirror.trouble-free.net/dosevasive/

Dosevasive 的配置安装鱼配置非常简单。

下面是我的配置(httpd.conf):

#add Apache DOS modules
#<IfModule mod_dosevasive20.c>
#    DOSHashTableSize    3097
#    DOSPageCount        3
#    DOSSiteCount        50
#    DOSPageInterval     1
#    DOSSiteInterval     1
#    DOSBlockingPeriod   10
#    #DOSEmailNotify 2hei.net
#    DOSWhitelist 127.0.0.1
#    DOSLogDir  “/tmp/mod_dosevasive”
#</IfModule>

其中一些参数可以自行修改设置。

我找了一些dos攻击的小工具,具体工具名称自己去网络上搜吧,这里不提供!(记住要先要关掉防火墙或者杀毒软件,否则,攻击工具无法正常运行!)

可以看到/var/log/message里的内容

说明如下:我设定的参数比较低,同样一个IP同一秒钟内访问统一url地址3次以上就被禁止,超过50次就被列入黑名单里面了,会禁止这个IP访问10秒钟时间。

Nov 22 11:04:56 localhost mod_dosevasive[5077]: Blacklisting address 192.168.1.110: possible DoS attack.
Nov 22 11:42:21 localhost mod_dosevasive[5555]: Blacklisting address 192.168.1.110: possible DoS attack

通过IE访问网站,页面会提示403错误,

分类: OpenSource, security 标签: ,

apache2 install with useful modules

2007年11月22日 评论已被关闭

我的安装配置环境是apache2.0.59+openssl-0.9.8g+mod_expires+mod_deflate等等。

 

donw openssl-0.9.8g.tar.gz from http://www.openssl.org/
tar -zxvf openssl-0.9.8g.tar.gz
cd openssl-0.9.8g
./config
make && make install

install apr and apr-util

cd httpd-2.0.59/srclib/apr
./configure –prefix=/usr/local/apache-apr
make
make install

Install Then apr-util:
cd httpd-2.0.59/srclib/apr-util
./configure –prefix=/usr/local/apache-apr-util –with-apr=/usr/local/apache-apr
make
make install

  • install httpd-2.0.59

这里使用个shell脚本来统一配置 configure。

cd httpd-2.0.59

cat My_config.sh
#/bin/sh
#2hei‘s_configure.sh for httpd-2.0.59
path_apache=`pwd`
$path_apache/configure –prefix=/usr/local/apache –with-perl=/usr/bin/perl –with-ssl=/usr/local/ssl –disable-userdir –disable-actions –disable-negotiation –disable-cgi –disable-asis –disable-autoindex –disable-status –disable-env –disable-filter –disable-include –disable-mod_authn_file –disable-mod_authn_default –disable-mod_authz_host –disable-mod_authz_groupfile –disable-mod_authz_user –disable-mod_authz_default –disable-mod_auth_basic –disable-mod_log_config –disable-mod_mime –disable-mod_dir –disable-mod_alias –enable-mods-shared=’cgi setenvif headers rewrite deflate authn_file authn_default authz_host authz_groupfile authz_user authz_default auth_basic log_config mime dir autoindex userdir expires negotiation alias’ –enable-ssl

sh My_config.sh

make && make install

至于modules的安装,可以使用静态方式,如:–with-alias=share ,也可以使用DSO方式来动态配置,使用apxs来手动安装。