`
mengdejun
  • 浏览: 410280 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

nginx配置文件实例: php (fastcgi), perl, proxy, rrd, nagios

    博客分类:
  • Php
阅读更多

nginx.conf

worker_processes 5;

error_log logs/error.log;
error_log logs/error.log info;

events {
use kqueue;
worker_connections 2048;
}

http {
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 64;

log_format main ‘$remote_addr – $remote_user [$time_local] $request ‘
‘”$status” $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;

access_log logs/access.log main;

sendfile on;

keepalive_timeout 65;

tcp_nopush on;

upstream proxy {
server 192.168.0.2:80 weight=2;
server 192.168.0.3:80;
}

server {
listen 80;
server_name my.example.com 192.168.0.1;

access_log logs/my.example.com.access.log main;

location /status {
stub_status on;
access_log off;
allow 192.168.0.1;
deny all;
}

location / {
root /usr/local/www/status;
index index.php;
allow 192.168.100.1;
deny all;
}

location ~ \.php$ {
fastcgi_pass unix:/tmp/php-fastcgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/www/status$fastcgi_script_name;
include fastcgi_params;
}

location /nagios {
root /usr/local/www;
allow 192.168.100.1;
deny all;
}

location ~ \.cgi$ {
root /usr/local/www/nagios/cgi-bin;
rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;
fastcgi_index index.cgi;
allow 192.168.100.1;
deny all;
fastcgi_pass unix:/tmp/perl_cgi-dispatch.sock;
fastcgi_param HTTP_ACCEPT_ENCODING gzip,deflate;
fastcgi_param SCRIPT_FILENAME /usr/local/www/nagios/cgi-bin$fastcgi_script_name;
include fastcgi_params;
}
}

server {
listen 80;
server_name proxy.example.com;

access_log logs/proxy.example.com.access.log main;

location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://proxy;
}
}
}

nginx-rrd.conf

#####################################################
#
# dir where rrd databases are stored
RRD_DIR=”/var/spool/nginx-rrd”;
# dir where png images are presented
WWW_DIR=”/usr/local/www/status”;
# process nice level
NICE_LEVEL=”-19″;
# bin dir
BIN_DIR=”/usr/sbin”;
# servers to test
# server_utl;server_name
SERVERS_URL=”http://my.example.com/status;my.example.com http://192.168.0.2/status;2″

fastcgi-php (creates php fastcgi socket, executable init script for FreeBSD, can be ported easily to other systems)

. /etc/rc.subr

name=”fcgiphp”
rcvar=`set_rcvar`

load_rc_config $name

: ${fcgiphp_enable=”NO”}
: ${fcgiphp_bin_path=”/usr/local/bin/php-cgi”}
: ${fcgiphp_user=”www”}
: ${fcgiphp_group=”www”}
: ${fcgiphp_children=”10″}
: ${fcgiphp_port=”8002″}
: ${fcgiphp_socket=”/tmp/php-fastcgi.sock”}
: ${fcgiphp_env=”SHELL PATH USER”}
: ${fcgiphp_max_requests=”500″}
: ${fcgiphp_addr=”localhost”}

pidfile=/var/run/fastcgi/fcgiphp.pid
procname=”${fcgiphp_bin_path}”
command_args=”/usr/local/bin/spawn-fcgi -f ${fcgiphp_bin_path} -u ${fcgiphp_user} -g ${fcgiphp_group} -C ${fcgiphp_children} -P ${pidfile}”
start_precmd=start_precmd
stop_postcmd=stop_postcmd

start_precmd()
{
PHP_FCGI_MAX_REQUESTS=”${fcgiphp_max_requests}”
FCGI_WEB_SERVER_ADDRS=$fcgiphp_addr
export PHP_FCGI_MAX_REQUESTS
export FCGI_WEB_SERVER_ADDRS
allowed_env=”${fcgiphp_env} PHP_FCGI_MAX_REQUESTS FCGI_WEB_SERVER_ADDRS”
# copy the allowed environment variables
E=”"
for i in $allowed_env; do
eval “x=\$i”
E=”$E $i=$x”
done
command=”env – $E”

if [ -n "${fcgiphp_socket}" ]; then
command_args=”${command_args} -s ${fcgiphp_socket}”
elif [ -n "${fcgiphp_port}" ]; then
command_args=”${command_args} -p ${fcgiphp_port}”
else
echo “socket or port must be specified!”
exit
fi
}

stop_postcmd()
{
rm -f ${pidfile}
#       eval “ipcs | awk ‘{ if (\$5 == \”${fcgiphp_user}\”) print \”ipcrm -s \”\$2}’ | /bin/sh”
}

run_rc_command “$1″

perl-fcgi.pl (creates perl socket) – you need the FCGI perl module for this

#!/usr/bin/perl

use FCGI;
#perl -MCPAN -e ‘install FCGI’
use Socket;

#this keeps the program alive or something after exec’ing perl scripts
END() { } BEGIN() { }
*CORE::GLOBAL::exit = sub { die “fakeexit\nrc=”.shift().”\n”; }; eval q{exit}; if ($@) { exit unless $@ =~ /^fakeexit/; } ;

&main;

sub main {
#$socket = FCGI::OpenSocket( “:3461″, 10 ); #use IP sockets
$socket = FCGI::OpenSocket( “/tmp/perl_cgi-dispatch.sock”, 10 ); #use UNIX sockets – user running this script must have w access to the ‘nginx’ folde
r!!
$request = FCGI::Request( \*STDIN, \*STDOUT, \*STDERR, \%req_params, $socket );
if ($request) { request_loop()};
FCGI::CloseSocket( $socket );
}

sub request_loop {
while( $request->Accept() >= 0 ) {

#processing any STDIN input from WebServer (for CGI-POST actions)
$stdin_passthrough =”;
$req_len = 0 + $req_params{’CONTENT_LENGTH’};
if (($req_params{’REQUEST_METHOD’} eq ‘POST’) && ($req_len != 0) ){
while ($req_len) {
$stdin_passthrough .= getc(STDIN);
$req_len–;
}
}

#running the cgi app
if ( (-x $req_params{SCRIPT_FILENAME}) &&  #can I execute this?
(-s $req_params{SCRIPT_FILENAME}) &&  #Is this file empty?
(-r $req_params{SCRIPT_FILENAME})     #can I read this file?
){
foreach $key ( keys %req_params){
$ENV{$key} = $req_params{$key};
}
#http://perldoc.perl.org/perlipc.html#Safe-Pipe-Opens
open $cgi_app, ‘-|’, $req_params{SCRIPT_FILENAME}, $stdin_passthrough or print(”Content-type: text/plain\r\n\r\n”); print “Error: CGI app ret
urned no output – Executing $req_params{SCRIPT_FILENAME} failed !\n”;
if ($cgi_app) {print <$cgi_app>; close $cgi_app;}
}
else {
print(”Content-type: text/plain\r\n\r\n”);
print “Error: No such CGI app – $req_params{SCRIPT_FILENAME} may not exist or is not executable by this process.\n”;
}

}
}

分享到:
评论

相关推荐

    Nginx配置文件详细说明

    在此记录下Nginx服务器nginx.conf的配置文件说明, 部分注释收集与网络. #运行用户 user www-data; #启动进程,通常设置成和cpu的数量相等 worker_processes 1; #全局错误日志及PID文件 error_log /var/log/...

    nginx配置文件-magent

    在本文中,我们将深入探讨“nginx配置文件-magent”这个主题,了解Nginx配置的基本结构、主要配置指令以及如何针对Magento电子商务平台进行定制化配置。 1. Nginx配置文件结构: Nginx的配置文件通常位于`/etc/...

    Windows平台,Nginx配置文件修改自动加载重启

    在Windows平台上,使用Nginx作为Web服务器时,配置文件的管理和更新是日常运维工作的重要环节。当Nginx的配置文件被修改后,通常需要手动执行`nginx -s reload`命令来使改动生效,这在频繁调整配置时可能会显得繁琐...

    实战Nginx_取代Apache的高性能Web服务器_第5章_Nginx与JSP、ASP.NET、Perl的安装与配置

    ### 实战Nginx:取代Apache的高性能Web服务器——第5章:Nginx与JSP、ASP.NET、Perl的安装与配置 #### Nginx简介 Nginx是一款广泛使用的高性能HTTP和反向代理服务器,它以其轻量级、高并发处理能力以及稳定的性能而...

    nginxconfig.io::gear:类固醇上的NGINX配置生成器:syringe:

    我们喜欢NGINX,因为: 内存使用率低高并发异步事件驱动架构负载均衡反向代理具有缓存的FastCGI支持(PHP) 快速处理静态文件带有SNI的TLS / SSL 许多功能具有相应的配置指令。 您可以立即深入研究也可以使用此工具...

    Nginx配置文件原始版本

    Nginx配置文件原始版本,这是刚下来的Nginx服务器最原始的版本内容,下载覆盖即可。

    nginx的各项详细配置-超多注释

    本篇文章将详细介绍Nginx的各项配置,并结合提供的"nginx.conf"配置文件和"nginx.txt"说明文件,深入解析Nginx的配置语法和应用场景。** ### 1. Nginx基本结构 Nginx的配置文件主要由多个块组成,包括全局块、...

    Linux下nginx+nagios

    修改Nginx配置文件 (`/usr/local/nginx/conf/nginx.conf`),配置FastCGI代理以支持Nagios Web接口。 2. **重启Nginx服务:** 重启Nginx以使配置生效。 #### 八、配置Nagios 1. **定义主机和服务:** 在Nagios...

    解析nginx配置文件nginx-java-parser.zip

    解析nginx配置文件,并将nginx配置文件格式化成对象,方便java程序管理nginx配置。解析配置文件并非使用正则匹配,而是使用语法分析树处理解决的。 标签:nginx

    Nginx配置文件中FastCGI相关参数理解

    Nginx配置文件中FastCGI相关参数理解

    Nginx安全配置指南技术手册pdf版最新版本

    **Nginx 安全配置指南技术手册** 本手册旨在为Nginx用户提供全面的安全配置指导。Nginx是一款广受欢迎的高性能HTTP和反向代理服务器,同时支持IMAP/POP3/SMTP代理功能。对于寻求安全设置相关资料的用户,本电子书...

    nagios+nginx+php配置监控平台

    配置完成后,通过`start_perl_cgi.sh`启动FastCGI服务,并确保Nginx和Nagios服务正常运行。 总结来说,这个配置组合提供了一个强大且灵活的网络监控平台,允许管理员通过Web界面轻松查看网络状态,及时发现并解决...

    nginx配置文件

    **Nginx配置文件详解** Nginx是一款高性能的HTTP和反向代理服务器,广泛应用于Web服务领域。其配置文件是Nginx的核心部分,它决定了Nginx如何响应请求和处理网络流量。本篇文章将深入探讨Linux环境下Nginx的配置...

    apache到nginx配置文件转换工具

    一个开源的Linux下运行的命令行工具,能将Apache的配置文件转换成相应的Nginx的配置文件。本工具能自动将Apache Web服务器的配置文件转化成Nginx的配置文件,减少WEB服务器迁移的工作量。 该工具从Apache Web服务器...

    lnmp安装(nginx mysql php )

    2. 安装Nginx:`sudo apt-get install nginx` 安装完成后,可以通过`systemctl start nginx`启动Nginx服务,并使用`systemctl status nginx`检查其状态。为了使Nginx在系统启动时自动启动,执行`systemctl enable ...

    Nginx文件上传模块配置

    在本文中,我们将深入探讨如何配置Nginx以支持文件上传功能,特别是使用upload_module和upload_progress_module这两个第三方模块。Nginx是一个高效且灵活的HTTP服务器和反向代理,由Igor Sysoev开发,它支持模块化的...

    nginx-1.14.0.zip_nginx fastcgi

    在配置Nginx以使用FastCGI时,你需要在Nginx配置文件中定义一个location块,指定哪些URL应该通过FastCGI处理。例如: ```nginx location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/...

    windows下 php+nginx配置详解

    安装完Nginx后,我们需要配置它的配置文件`nginx.conf`。这个文件通常位于`nginx`安装目录下的`conf`子目录中。在这个文件中,我们需要定义服务器块来监听HTTP请求,并指定PHP处理器的位置。例如: ```nginx server...

    nginx配置文件-安装客户端ip进行转发

    总的来说,Nginx的配置文件允许我们灵活地管理网络流量,通过`proxy_pass`指令和相关的头信息设置,我们可以确保客户端IP信息在转发过程中得到保留。这在需要追踪用户行为、实施安全策略或者进行负载均衡时尤其有用...

Global site tag (gtag.js) - Google Analytics