2016-11-07 2 views
0

Ich brauche solche die nginx Konfigurationen einzustellen, dass die URL "http://host/cgi-bin/hw.sh/some/path/to/data/" sollte das Shell-Skript "hw.sh" present unter Pfad auslösen "/usr/lib/cgi-bin/ ".Benötigen Sie auf Nginx CGI-Konfiguration helfen

Jetzt, nach den Anweisungen auf der Seite https://www.howtoforge.com/serving-cgi-scripts-with-nginx-on-debian-squeeze-ubuntu-11.04-p3 erwähnt, müssen wir die Konfigurationen unter einer ".vhost" -Datei einstellen. Aber ich habe eine Standarddatei bereits unter Pfad "/etc/nginx/sites-available/default" statt einer .vhost-Datei.

Und wenn ich die gleichen Konfigurationen verwenden, bekomme ich HTTP/1.1 403 Forbidden Fehler. Ich habe sichergestellt, dass das Skript auch ausführbare Rechte benötigt. Unten ist der Fehler, der in nginx-Protokollen empfangen wird.

FastCGI sent in stderr: "Cannot get script name, are DOCUMENT_ROOT and SCRIPT_NAME (or SCRIPT_FILENAME) set and is the script executable?" 
while reading response header from upstream, 
client: host_ip, server: localhost, 
request: "HEAD /cgi-bin/hw.sh/some/path/to/data/ HTTP/1.1", 
upstream: "fastcgi://unix:/var/run/fcgiwrap.socket:", host: "host_ip" 

Ich brauche Hilfe in die richtige Konfiguration zu schreiben, so dass meine URL oben, um die oben genannten Skript unter dem Pfad hw.sh ausführt und korrekte Ausgabe zurückgibt. Könnte mir bitte jemand hier helfen?

Unten ist meine Konfiguration unter Standard-Datei verwendet.

server { 
     listen 80 default_server; 
[...]  
location /cgi-bin/ { 
     # Disable gzip (it makes scripts feel slower since they have to complete 
     # before getting gzipped) 
     gzip off; 
     # Set the root to /usr/lib (inside this location this means that we are 
     # giving access to the files under /usr/lib/cgi-bin) 
     root /usr/lib; 
     # Fastcgi socket 
     fastcgi_pass unix:/var/run/fcgiwrap.socket; 
     # Fastcgi parameters, include the standard ones 
     include /etc/nginx/fastcgi_params; 
     # Adjust non standard parameters (SCRIPT_FILENAME) 
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
     } 
[...] 
} 
+0

CGI ist völlig anders als FastCGI, aber [diese Seite könnte Ihnen helfen] (https://www.nginx.com/resources/wiki/start/topics/examples/fcgiwrap/). –

Antwort

1

Line "fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name;" in der Konfiguration verursachte das Problem. Wenn ich es in "fastcgi_param SCRIPT_FILENAME $ request_filename;" geändert habe, funktioniert alles wie erwartet.

Verwandte Themen