2016-07-11 13 views
1

これは、FastCGIとNGINXに関する私の最後の質問です。私はあまりにも多くのことを尋ねましたが、Webサーバー、特にNGINX上でC FastCGIスクリプトを実行することに関する質問がありました。私はHello Worldのをプリントアウトし、簡単なCのFastCGIスクリプトを持ってNGINXを使用してC FastCGIスクリプトを実行する

user nobody nobody; 

events { 
worker_connections 1024; 
}  

http { 
server { 
listen 80; 
server_name localhost; 

location/{ 
    root   /nginx/html; 
    index index.html index.htm new.html; 
     autoindex on; 
      fastcgi_pass 127.0.0.1:8000; 

} 

} 
} 

:だから、今、これは私のnginx.confファイルがどのように見えるかです。私はこのスクリプトを実行するために、まずバイナリになるCスクリプトをコンパイルする必要があることを知っています。私はspawn-fcgi -p 8000 -n <binary>またはcgi-fcgi -start -connect localhost:8000 ./<binary>を使ってこのバイナリを実行します。私はこれを成功させ、正しい結果を表示しました。しかし、これを行うと、CGIスクリプトだけがWebサーバーに表示されます。私はどんな.htmlページや他のページに行くことはできません。 404ページが見つかりませんでしたエラーが発生するはずのランダムな拡張子を入力しても、CGIスクリプトが表示されています。基本的に私はindex.htmlをホームページにしたいと思っています。ユーザーがボタンをクリックすると、C CGIスクリプトを表示する新しいページが表示されます。

これは可能ですか?もしそうなら、どうすればいい?私はオンラインで解決策を見つけようと数時間を費やしましたが、成功はありませんでした。質問があまりにも曖昧すぎるのか不明なのか、さらに詳しい情報が必要な場合はお知らせください。ありがとうございました!

答えて

3

考えられる2つの可能性があります。あなたはあなたのCGIプログラムにURIを割り当て、それを使ってそれにアクセスすることができます。あるいは、無効なURIをCGIプログラムに送ることもできます。

最初のケースでは、あなたが使用できます。

root /nginx/html; 
index index.html index.htm new.html; 

location/{ 
    try_files $uri $uri/ =404; 
} 
location /api { 
    fastcgi_pass 127.0.0.1:8000; 
} 

ので、/apiを持つ任意のURIの先頭には、CGIプログラムに送信されます。他のURIは、見つからない限りnginxによって提供されます。この場合、404応答が返されます。


は、第二のケースでは、使用できます。
root /nginx/html; 
index index.html index.htm new.html; 

location/{ 
    try_files $uri $uri/ @api; 
} 
location @api { 
    fastcgi_pass 127.0.0.1:8000; 
} 

だから存在しない任意のURIは、CGIプログラムに送信されます。

try_filesディレクティブの場合は、locationディレクティブの場合はthis documentを参照してください。

+0

パーフェクト! .confファイルをどのように正確に操作するかを理解した方がよいでしょうが、あなたの答えが助けになりました! – trynacode

関連する問題