Nginx和Perl的結合

nginx_web發表於2012-06-10

 

    NginxPerl的結合中,同樣是通過Nginx的配置檔案中設定FastCGI代理來完成,而執行在後端的perl-FastCGI有三種可能,一種是perl-FastCGI執行於Unix套接字方式,那麼在這種方式中,前端的Nginx和後端的perl-FastCGI必須執行在同一臺伺服器上;第二種是perl-FastCGI執行於TCP套接字,因此,基於第二種就有分為兩種,一種是執行於本機,及前後臺同機,而另一種為前後臺不同機,所以共有三種方式。

 

三種結合方式

 

例子1

 

    在下面的一個例子中,前後臺分別執行在兩臺不同的機器上,例如:

 

    前臺Nginx伺服器:

IP地址為 192.168.10.95

然後對映為外網IP,對外域名www.xx.com

 

後臺perl-FastCGI

IP地址為 192.168.10.91

                     IP地址為 192.168.10.92

                     IP地址為 192.168.10.93

                     與前臺同機unix:/var/run/nginx/perl_cgi-dispatch.sock;

 

     即後臺的perl-FastCGI分佈在3臺不同的機器上。

 

    Nginx的配置檔案中新增以下內容:

 

 

upstream backend  {

  server 192.168.10.91:8999;

  server 192.168.10.92:8999;

  server 192.168.10.93:8999;

  server unix:/var/run/nginx/perl_cgi-dispatch.sock;

}

 

server {

  listen       80;

  server_name  localhost;

  root  /var/www/;

  index index.html;

 

  location ~  \.(pl|cgi)$ {

    gzip off;

    fastcgi_index            index.cgi;

    include                 fastcgi.conf;

    fastcgi_read_timeout      5m;

    fastcgi_pass             backend;

 

}

   

    這個配置是一個輪詢的實現,可以新增ip_hash指令,實現“貼上”訪問。

 

 

例子2

 

    在這個例子中,我們將測試快取,為了看出效果,因此我們使用了兩臺後臺伺服器,即兩臺perl-FastCGI。環境是這樣的:

 

    前臺Nginx伺服器:

IP地址為 192.168.10.95

然後對映為外網IP,對外域名www.xx.com

 

後臺perl-FastCGI

IP地址為 192.168.10.91

                     IP地址為 192.168.10.92

 

    測試頁面:

 

IP地址為 192.168.10.91perl-FastCGI伺服器的頁面內容為:

 

[root@ fastcgi1 www]# pwd

/var/www

[root@ fastcgi1 www]# cat test.pl

#!/usr/bin/perl

 

print "Content-type: text/html\n\n";

print "This is 192.168.10.91.";

 

IP地址為 192.168.10.91perl-FastCGI伺服器的頁面內容為:

    

[root@ fastcgi2 www]# pwd

/var/www

[root@ fastcgi2 www]# cat test.pl

#!/usr/bin/perl

 

print "Content-type: text/html\n\n";

print "This is 192.168.10.92.";

 

 

Nginx的配置檔案中新增以下內容:

 

http {

  fastcgi_cache_path   /var/tmp/perl-FastCGI  levels=1:2

                       keys_zone=CACHE:10m

                       inactive=5m;

 

  fastcgi_cache_key "$scheme$request_method$host$request_uri";

 

upstream backend  {

    server 192.168.10.91:8999;

    server 192.168.10.92:8999;

}

 

server {

    listen       80;

    server_name  localhost;

    root  /var/www/;

    index index.html;

 

    location ~  \.(pl|cgi)$ {

      gzip off;

      fastcgi_index            index.cgi;

      include                 fastcgi.conf;

      fastcgi_read_timeout      5m;

      fastcgi_pass             backend;

      fastcgi_cache          CACHE;

      fastcgi_cache_valid    200 302  1h;

      fastcgi_cache_valid    301      1d;

      fastcgi_cache_valid    any      1m;

      fastcgi_cache_min_uses  1;

      fastcgi_cache_use_stale error  timeout invalid_header http_500;

}

   

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27043155/viewspace-732400/,如需轉載,請註明出處,否則將追究法律責任。

相關文章