4

C::A アプリを nginx fastcgi 環境 (debian 6.0) で動作させ、spawn-fcgi を使用しようとしています。

C::ルートは次を使用して構成されます$self->mode_param( path_info=> 1, param => 'rm' );

example.com/cities問題は、example.com/profile/99私が要求しているC::A アプリの URL ( など) が何であれ、それが常にホームページを表示することexample.com/index.plです。

私のnginxのセットアップは

server {
    listen   80;
    server_name example.com;
    root /var/www/example.com/htdocs;
    index  index.pl index.html;

    location / {
        try_files $uri $uri/ /index.pl;
    }

    location ~ .*\.pl$ {
            include fastcgi_params;   # this is the stock fastcgi_params file supplied in debian 6.0
            fastcgi_index index.pl;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PERL5LIB "/var/www/example.com/lib";
            fastcgi_param CGIAPP_CONFIG_FILE "/var/www/example.com/conf/my.conf";
            fastcgi_pass unix:/var/run/fcgiwrap.socket;
    }

}

同様の方法でいくつかのphpアプリを正常にセットアップしました。

fastcgi_paramただし、この場合、必要な C::A にエッセンシャルを渡していないのではないかと思います。

あなたの考えは何ですか?

4

2 に答える 2

2

私は CGI::Application を維持しており、Nginx も使用しています。私は同じことをしていませんが、これを試してみます:

fastcgi_split_path_info ^(/index.pl)(.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;

これは、必要な PATH_INFO をキャプチャして転送することになっています。

参考文献:

于 2012-08-02T14:44:48.017 に答える
1

C::A アプリの回避策で問題を解決しました。そして、私はそれをここに文書化しています。

そのため、nginx をPATH_INFOC::A アプリに渡すことができませんでした。これを回避するために、C::A アプリPATH_INFOで の値を設定しREQUEST_URIて、正しい実行モードを選択するようにしました。

また、nginxも通過していないため、同様に通過するためにキャッチオールルートにQUERY_STRING追加する必要がありました。$query_stringQUERY_STRING

私のnginx設定は次のようになります:

server {
    listen   80;
    server_name example.com;
    root /var/www/example.com/htdocs;
    index  index.pl index.html;

    location / {
        try_files $uri $uri/ /index.pl?$query_string;
    }

    location ~ .*\.pl$ {
            include fastcgi_params;   # this is the stock fastcgi_params file supplied in debian 6.0
            fastcgi_index index.pl;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PERL5LIB "/var/www/example.com/lib";
            fastcgi_param CGIAPP_CONFIG_FILE "/var/www/example.com/conf/my.conf";
            fastcgi_pass unix:/var/run/fcgiwrap.socket;
    }

}
于 2012-08-05T04:27:10.493 に答える