`
LIMIMGJIE
  • 浏览: 173713 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nginx的嵌入perl脚本的配置文件样例

阅读更多
user  apache apache;

worker_processes 8;
pid        /opt/modules/nginx/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;

events
{
        use epoll;
        worker_connections 65535;
}

http
{
        include       mime.types;
        default_type  application/octet-stream;
        charset  utf-8;

        server_names_hash_bucket_size 128;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 300m;

        sendfile on;
        tcp_nopush     on;

        keepalive_timeout 60;

        tcp_nodelay on;

        client_body_buffer_size  512k;
        proxy_connect_timeout    5;
        proxy_read_timeout       60;
        proxy_send_timeout       5;
        proxy_buffer_size        16k;
        proxy_buffers            4 64k;
        proxy_busy_buffers_size 128k;
        proxy_temp_file_write_size 128k;

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 2;
        gzip_types       text/plain application/x-javascript text/css application/xml;
        gzip_vary on;

        #注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
        proxy_temp_path   /opt/data/proxy_temp_dir;
        #设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。
        proxy_cache_path  /opt/data/proxy_cache_dir  levels=1:2   keys_zone=cache_one:200m inactive=1d max_size=30g;

        log_format  main  '$request_uri,$status,$remote_addr,$http_x_forwarded_for,[$time_local],$body_bytes_sent';
        log_format  count  '$request_uri,$status,$http_x_forwarded_for,$remote_addr,[$time_local]';

        upstream storm_perl {
                server   192.168.1.87:8000 weight=1 max_fails=2 fail_timeout=30s;
                server   192.168.1.110:8000 weight=1 max_fails=2 fail_timeout=30s;
        }

        upstream backend_server {
                server   192.168.1.87:8080 weight=1 max_fails=2 fail_timeout=30s;
                server   192.168.1.110:8080 weight=1 max_fails=2 fail_timeout=30s;
        }


        perl_set $storm_key_new '
                use MIME::Base64::Perl;
                use URI::Escape;
                sub{
                        my $r = shift;
                        my $request_uri = $r->variable("request_uri");
                        my $query_uri = $r->unescape($request_uri);
                        
                        my $buffer = $query_uri;
                        my @pairs = split(/&/, $buffer);
                        foreach $pair (@pairs)
                        {
                                if($pair =~ /c=storm/i){
                                        $pair =~ s/c=//g;
                                        return $pair;
                                }
                        }
                }
        ';

        server
        {
                listen       80;
                server_name  storm.baofeng.net;
                index index.html index.htm index.php;
                root  /opt/baofeng-data/;
                
                location /
                {
                
                        expires 1h;
#                       add_header Cache-Control no-cache;
#                       add_header Cache-Control private;
                        
                        proxy_next_upstream http_502 http_504 error timeout invalid_header;
                        proxy_cache cache_one;
                        #对不同的HTTP状态码设置不同的缓存时间
                        proxy_cache_valid  200 304 30d;
                        proxy_cache_valid  404 1m;
                        #以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
                        
                        proxy_cache_key $storm_key_new;
                        proxy_set_header Host  $host;
                        proxy_set_header X-Forwarded-For  $remote_addr;
                        proxy_pass http://storm_perl;

                        error_log  /opt/modules/nginx/logs/error.log crit;
                        access_log  /opt/modules/nginx/logs/access.log main;
                }

                location ~* ^/NginxStatus/? { 
                         stub_status on; #Nginx 状态监控配置
                         access_log off; 
                 } 
        }

        server
        {
                listen       8000;
                server_name  storm.baofeng.net;
                index index.html index.htm index.php;
                root  /opt/baofeng-data/;  

                set $memd 0;
                set $memcached_server "127.0.0.1:11211";

                location ~ .*\.(php|jsp|cgi)?
                {
                        perl 'sub {
                                use Cache::Memcached;
                                my $r = shift;
                                if($r->variable("memd")){
                                        my $memd = $r->variable("memd");
                                }
                                if(!$memd){
                                        $memd = new Cache::Memcached {"servers" => [$r->variable("memcached_server")],"debug" => 0,"compress_threshold" => 10_000};
                                        $r->variable("memd",$memd);
                                }

                                my $realkey = 0;
                                $realkey = $r->variable("storm_key_new");
                                my $stormbox = $memd->get($realkey);

                                if($stormbox){
                                        $r->send_http_header;
                                        $r->print($stormbox);
                                        return 200;
                                }else{
                                        return 404;
                                }
                        }';
                        error_page      404 500 502 503 504 = @get_storm;
                        access_log  /opt/modules/nginx/logs/log_mm.log count;
                }

                location @get_storm {
                        proxy_set_header Host  $host;
                        proxy_set_header X-Forwarded-For  $remote_addr;
                        proxy_pass http://backend_server;
                        access_log  /opt/modules/nginx/logs/log_db.log count;
                }
        }

                     
}

分享到:
评论
1 楼 fangjing 2010-12-17  
楼主我这么写好下perl_set不支持啊
perl_set $storm_key_new '  
return "";
';
[emerg]: unknown directive "perl_set" in E:\dev\nginx-0.8.39/conf/nginx.conf:49
需要其他配置么?

相关推荐

    Nginx脚本

    在Nginx中,ngx_lua模块允许我们在Nginx配置文件中嵌入Lua代码,实现更复杂的业务逻辑。例如,我们可以用Lua来处理请求、验证身份、动态生成响应等。 #### 2.1 ngx_lua基本结构 在Nginx配置文件中,我们可以使用`...

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

    4. **配置Perl CGI脚本**:在Nginx配置文件中添加以下内容。 ```nginx location ~ \.pl$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.pl; fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$...

    nginx-1.15.7.zip

    8. **模块扩展**:Nginx拥有丰富的第三方模块,如 ngx_http_perl_module 可以嵌入Perl脚本, ngx_pagespeed 用于网页优化, ngx_lua_module 提供Lua脚本支持等。 在解压"nginx-1.15.7"文件后,用户通常会找到以下...

    跟我学Nginx + Lua开发

    而Lua是一种轻量级的脚本语言,具备高性能、轻量、可嵌入等特性。将Nginx与Lua结合,可以使Nginx不仅仅作为一个静态内容服务器,还可以执行动态内容的生成,大大扩展了Nginx的功能。 OpenResty是基于Nginx与LuaJIT...

    Nginx 模块参考手册中文版.pdf

    2. **嵌入式Perl模块**(Embedded Perl):允许在配置文件中嵌入Perl脚本。 3. **FLV模块**(FLV):处理Flash视频流。 4. **GzipPrecompression模块**(Gzip Precompression):提供预压缩功能。 5. **RandomIndex...

    centos 6.0最简化编译安装Nginx+Mysql+PHP+Zend

    Nginx是一款由Igor Sysoev为高流量网站设计的Web服务器软件,以其高性能、稳定性著称,尤其适用于处理大量并发连接和静态文件请求。它在许多大型网站中被广泛应用,包括俄罗斯访问量第二的Rambler站点。Nginx的优势...

    Nginx_模块参考手册中文版

    嵌入式Perl模块允许在配置文件中直接使用Perl脚本。 ##### FLV模块(FLV) FLV模块支持流媒体文件格式FLV的处理。 ##### GzipPrecompression模块(Gzip Precompression) GzipPrecompression模块为静态文件提供...

    跟我学Nginx+Lua开发

    Lua脚本可以直接嵌入到Nginx配置文件中,通过`content_by_lua_file`或`rewrite_by_lua_file`指令来调用Lua代码。 ##### 1. Lua脚本示例 下面是一个简单的Lua脚本示例,展示了如何使用Lua来处理HTTP请求: ```lua ...

    centos7离线部署nginx-mysql-php时需要用到的一些依赖包

    - `pcre`: Perl兼容正则表达式库,用于Nginx的URL匹配规则。 - `zlib`: 数据压缩库,用于HTTP压缩功能。 2. **MySQL依赖**: - `ncurses**: 提供命令行界面的用户界面库,用于MySQL安装过程中的文本交互。 - `...

    跟我学Nginx+Lua开发.pdf

    而Lua作为一种轻量级的脚本语言,易于嵌入到应用程序中,并以其简单高效的特性在游戏开发、系统管理等领域有着广泛的应用。 结合Nginx和Lua可以构建出极其强大的Web应用程序和服务。OpenResty就是这一结合的最佳...

    Nginx模块参考手册中文版

    嵌入式Perl模块允许在配置文件中直接使用Perl代码。 ##### FLV模块 (FLV) FLV模块支持FLV格式的流媒体传输。 ##### GzipPrecompression模块 (Gzip Precompression) GzipPrecompression模块允许在文件发送前预...

    cgi.rar_CGI脚本_cgi

    - 脚本路径通常在服务器配置文件(如Apache的httpd.conf或Nginx的nginx.conf)中定义。 6. **www.pudn.com.txt可能包含的资源:** - 这个TXT文件可能包含CGI教程、示例代码、相关讨论论坛的链接或其他资源,帮助...

    Linux-Apache-Nginx-MySQL-PHP

    这个包可能包含了预配置的软件、配置文件以及安装指南,帮助用户快速搭建LAMP/LEMP环境。 安装LAMP/LEMP时,通常遵循以下步骤: 1. 安装Linux操作系统:根据选择的Linux发行版,通过包管理器(如apt-get或yum)...

    openresty-1.11.2.4-win32

    1. 动态脚本处理:OpenResty允许用户在Nginx配置文件中嵌入Lua脚本,实现动态逻辑,如认证、限流、数据缓存等。 2. 高性能API接口:OpenResty提供了一系列C语言实现的API接口,可以方便地调用Nginx的内部功能,如...

Global site tag (gtag.js) - Google Analytics