我知道這個問題已經被問到了,但是這個問題沒有明確的答案(How to run CGI scripts on Nginx)會幫助我。就我而言,我已經使用源代碼安裝了NGINX,並修復了我的.config文件,以便我可以使用FASTCGI成功讀取.php文件。但是,當涉及到運行CGI腳本時,我遇到了相當多的問題。我知道我已經安裝並設置了FAST CGI,所以我應該命名這些.cgi文件.fcgi而不是?或者我應該包含一些.cgi文件以瞭解它是否與FAST CGI一起工作?我試圖與nginf.conf文件玩弄周圍包括.fcgi,它看起來是這樣的現在:在NGINX上運行CGI腳本
worker_processes 2;
pid logs/nginx.pid;
error_log syslog:server=unix:/dev/log,facility=local7,tag=nginx,severity=error;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
access_log syslog:server=unix:/dev/log,facility=local7,tag=nginx,severity=info combined;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
root /home/parallels/Downloads/user_name/nginx/html;
location/{
index index.html index.htm new.html;
autoindex on;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
include fastcgi_params;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
location ~ \.pl|fcgi$ {
try_files $uri =404;
gzip off;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.pl;
#fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
但是,每當我運行一個腳本.fcgi如
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html><body>Hello, world.</body></html>";
我我招呼着屏幕,看起來像這樣:
我敢肯定,這是不正常的;我應該只在屏幕上看到Hello, world.
,而不是所有的代碼。請讓我知道,如果我的想法實際上是錯誤的,這應該是正確的輸出。
此外,在一個側面說明,如果我有這個作爲我files.fcgi
文件:
#!/usr/bin/perl
my $output = `ls`;
print $output
運行這樣返回的.fcgi文件位於目錄中的所有文件的列表。無論如何,我可以在網絡瀏覽器上顯示它?看看網上的例子,似乎人們已經能夠在他們的瀏覽器上運行file.fcgi
,並看到shell命令的輸出(這導致我相信我做錯了什麼,因爲當我在命令行上運行它時列出了所有的文件,但在瀏覽器中,它只是打印出我的代碼)。有誰知道我可能做錯了什麼,假設我做錯了什麼。如果您需要更多信息,請告訴我!
謝謝你,祝你有美好的一天!
僅製作後綴.fcgi不會將該示例變爲FastCGI程序;它仍然是一個傳統的CGI程序 –
FastCGI程序中是否有必須包含的內容?像'使用fast:cgi'或類似的東西? – trynacode
不幸的是,我最近一次查看它並不那麼簡單 - 而標準的cgi API是「針對每個請求的,服務器使用env vars調用您的程序來描述請求,並使用stdin上的主體(如果有的話)你的程序預計會在stdout和exit上發出響應「,fcgi API希望你的程序能夠持續運行並處理在套接字上傳遞給它的請求 - 這樣,它就更像是一臺服務器。請參閱https://en.wikipedia.org/wiki/FastCGI –