29

Nginxで実行するCGIスクリプトの設定に問題があります。これまでのところ、http: //wiki.nginx.org/SimpleCGIを見つけましたが、perlスクリプトをサービスとして実行できないため問題が発生します。バックグラウンドで実行し、再起動した場合でも自動的に実行を開始します

何か考えはありますか?Centos5を実行しています

私はここでいくつかの解決策を見つけましたが、そこに与えられたコードをこのPerlスクリプトと統合できませんでした私は Perlで完全にゼロです、助けてくださいありがとう

4

5 に答える 5

23

NginxはネイティブCGIをサポートしていません(代わりにfastCGIをサポートしています)。このための一般的な解決策は、PerlスクリプトをfastCGIプロセスとして実行し、nginx構成ファイルを編集してリクエストをfastCGIプロセスにリダイレクトすることです。CGIスクリプトを実行するだけの場合、これは非常に複雑なソリューションです。

このソリューションにnginxを使用する必要がありますか?Perl CGIスクリプトを実行するだけの場合は、CGIスクリプトをネイティブに処理し、スクリプトを個別のプロセスとして実行する必要がないCGIモジュールが付属しているApacheまたはLighttpdの使用を検討してください。これを行うには、Webサーバーをインストールし、Webサーバー構成ファイルを編集してCGIモジュールをロードする必要があります。Lighttpdの場合、CGIファイルの処理を有効にするには、設定ファイルに行を追加する必要があります。次に、CGIファイルをcgi-binフォルダーに配置します。

于 2012-07-26T11:22:54.393 に答える
15

別のポートで実行される別のWebサーバー(Apache、Lighttpd)をインストールします。次に、nginxを使用してCGIリクエストをウェブサーバーにプロキシします。

8080にWebサーバーをインストールした後、これをnginx構成に追加する必要があります

location /cgi-bin {
    proxy_pass http://127.0.0.1:8080;
}

詳細については、Nginx LocationDirectiveExplainedをご覧ください。

于 2012-07-26T12:02:13.413 に答える
14

NginxはWebサーバーです。タスクには、たとえばuWSGIなどのアプリケーションサーバーを使用する必要があります。uwsgiと呼ばれるネイティブの非常に効果的なバイナリインターフェイスを使用してnginxと通信できます。

于 2012-07-26T11:55:36.357 に答える
5

FastCGIを使用したこのハックは、別のWebサーバーを実行するよりも少し優れていることがわかりました。http://nginxlibrary.com/perl-fastcgi/

于 2017-11-08T18:28:58.523 に答える
2

私はこれを見つけました: https ://github.com/ruudud/cgi それは言う:

===

On Ubuntu: apt-get install nginx fcgiwrap
On Arch: pacman -S nginx fcgiwrap

Example Nginx config (Ubuntu: /etc/nginx/sites-enabled/default):

server {
    listen   80;
    server_name  localhost;
    access_log  /var/log/nginx/access.log;

    location / {
        root /srv/static;
        autoindex on;
        index index.html index.htm;
    }

    location ~ ^/cgi {
        root /srv/my_cgi_app;
        rewrite ^/cgi/(.*) /$1 break;

        include fastcgi_params;
        fastcgi_pass unix:/var/run/fcgiwrap.socket;
        fastcgi_param SCRIPT_FILENAME /srv/my_cgi_app$fastcgi_script_name;
    }
}

ルート行とfastcgi_param行を、CGIスクリプトを含むディレクトリ(このリポジトリのcgi-bin / dirなど)に変更します。

コントロールフリークでfcgiwrapを手動で実行している場合は、それに応じてfastcgi_passを変更してください。例にリストされているパスは、すぐに使用できるfcgiwrapセットアップを使用する場合のUbuntuのデフォルトです。

===

私はそれを試してみようとしています。

于 2019-01-02T04:07:26.437 に答える