nginx上配置nagios出现502错误

\wKiom1OCveyQNWBnAADtveLKxCM245.jpg 
ios

<span style="background-color: rgb(255, 255, 255); font-family: Tahoma, " microsoft="" yahei',="" simsun;="" font-size:="" 14px;="" line-height:="" 21px;="" color:="" rgb(68,="" 68,="" 68);="" "="">下面是nginx的错误日志:
<span style="background-color: rgb(255, 255, 255); font-family: Tahoma, " microsoft="" yahei',="" simsun;="" font-size:="" 14px;="" line-height:="" 21px;="" color:="" rgb(68,="" 68,="" 68);="" "="">2012/06/27 15:15:18 [error] 28672#0: *2288 upstream closed prematurely FastCGI stdout while reading response header from upstream, client: 10.10.10.120, server: localhost, request: "POST /nagios/cgi-bin/cmd.cgi HTTP/1.1", upstream: "fastcgi://unix:/usr/local/nginx/logs/perl-fcgi.sock:", host: "10.10.10.201", referrer: "http://10.10.10.201/nagios/cgi-bin/cmd.cgi?cmd_typ=22&host=WEB1&service=HTTP"nginx

 

 

解决方案:web

nagios依赖 PHP 环境 和per 环境;
nginx不支持perl的CGI;
须要先 搭建perl环境,让nginx支持perl的CGI方法不少,基本原理都是经过perl的FCGI模块来实现,使用其中一种方法实现:
A.        安装FCGI模块
wget http://search.cpan.org/CPAN/auth ... RA/FCGI-0.73.tar.gz
tar xvzf FCGI-0.73.tar.gz
cd FCGI-0.73
perl Makefile.PL
make
make install
cd ..bash

B. 安装FCGI-ProcManager模块
wget http://search.cpan.org/CPAN/auth ... Manager-0.19.tar.gz
tar xvzf FCGI-ProcManager-0.19.tar.gz
cd FCGI-ProcManager-0.19
perl Makefile.PL
make
make install
cd ..ide


C.        安装IO和IO::ALL模块
wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/IO-1.25.tar.gz
tar zxvf IO-1.25.tar.gz
cd IO-1.25
perl Makefile.PL
make
make install
cd ..spa

wget http://search.cpan.org/CPAN/auth ... /IO-All-0.41.tar.gz
tar zxvf IO-All-0.41.tar.gz
cd IO-All-0.41
perl Makefile.PL
make
make install
cd ..
D.        下载Perl脚本
这个脚本的目的就是产生一个PERL的FastCGI接口,让Nginx能够以CGI方式处理Perl。
wget http://www.mike.org.cn/wp-content/uploads/2011/07/perl-fcgi.zip
unzip perl-fcgi.zip
cp perl-fcgi.pl /usr/local/webserver/nginx/
注:建议把这个脚本放在Nginx安装目录。
  修改脚本权限
chmod 755 /usr/local/webserver/nginx/perl-fcgi.pl
E. 创建一个CGI启动/中止脚本
这个SHELL脚本只是为了方便管理上面的Perl脚本。脚本中的www为nginx的运行用户,请据本身的实际状况调整。
  注意事项:不能用root用户执行(会提示). 要用与Nginx相同身份的用户执行。不然可能会在Nginx Log中提示 Permision Denied。
vi /usr/local/webserver/nginx/start_perl_cgi.shunix

#!/bin/bash
#set -x
dir=/usr/local/webserver/nginx/rest

stop ()
{
#pkill  -f  $dir/perl-fcgi.pl
kill $(cat $dir/logs/perl-fcgi.pid)
rm $dir/logs/perl-fcgi.pid 2>/dev/null
rm $dir/logs/perl-fcgi.sock 2>/dev/null
echo "stop perl-fcgi done"
}日志

start ()
{
rm $dir/now_start_perl_fcgi.sh 2>/dev/nullserver

chown www.www $dir/logs
echo "$dir/perl-fcgi.pl -l $dir/logs/perl-fcgi.log -pid $dir/logs/perl-fcgi.pid -S $dir/logs/perl-fcgi.sock" >>$dir/now_start_perl_fcgi.sh

chown www.www $dir/now_start_perl_fcgi.sh
chmod u+x $dir/now_start_perl_fcgi.sh

sudo -u www $dir/now_start_perl_fcgi.sh
echo "start perl-fcgi done"
}

case $1 in
stop)
stop
;;
start)
start
;;
restart)
stop
start
;;
esac

修改SHELL脚本权限chmod 755 /usr/local/webserver/nginx/start_perl_cgi.sh启动脚本/usr/local/webserver/nginx/start_perl_cgi.sh start 正常状况下在/usr/local/webserver/nginx/logs下生成perl-fcgi.sock这个文件,若是没有生成,请检查下上面的步聚

相关文章
相关标签/搜索