2010-10-08 25 views
2

J'utilise un module web FreePascal conçu pour apache cgi-bin avec nginx.Quelles sont les règles d'emplacement correctes de nginx pour correspondre uniquement au premier élément de chemin dans l'URI à l'exécutable CGI?

Le CGI lui-même est appelé spidersample.cgi et contient des modules tels que bonjour, bye etc.

Avec Apache quand spidersample.cgi/bonjour est appelé, spidersample.cgi est exécuté et passe le contrôle au sous-programme Hello qu'il contient.

Avec nginx au lieu d'exécuter spidersample.cgi il traite spidersample.cgi/bonjour comme signifiant un fichier bonjour dans un répertoire de spidersample.cgi, et revient avec une erreur 404 comme il n'y a pas annuaire.

Je suppose que c'est un problème facilement résolu avec certaines règles de réécriture dans le fichier de configuration et il est posté ci-dessous.

========================================

serveur { écoute 8118; nom_serveur localhost; access_log /var/log/nginx/sysman_access.log; index index.html; root/home/rchurch/Données/Lazarus/CgiApps;

location ~ \.cgi$ { 
      include /etc/nginx/fastcgi_params; 
      fastcgi_pass unix:/tmp/sysman_cgi.sock; 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_n$ 
      fastcgi_param QUERY_STRING  $query_string; 
      fastcgi_param REQUEST_METHOD $request_method; 
      fastcgi_param CONTENT_TYPE  $content_type; 
      fastcgi_param CONTENT_LENGTH $content_length; 
    } 

}

====================================== =============================

Répondre

0

l'emplacement ~ .cgi $ correspond à spidersample.cgi // $ signifie la fin de la ligne Spiderample.cgi/hello correspond à l'emplacement ~ (. +) Cgi/hello ou (. +) Cgi (. *)