シンプルな CGI::Application::Dispatch ベースの REST アプリケーションを Apache サーバーから Nginx に変換しようとしています。アプリケーションは Apache の下で問題なく動作しますが、Nginx の下で実行すると、Dispatch リクエストのルート レイヤー (/app) のみが機能します。パスに /app/doit などの追加部分があると、呼び出しが Forbidden で失敗します。
URL を fastcgi に渡す方法を変更する必要があると思われますが、URL を分割する方法が明確ではありません。私が見つけたほとんどの例は、dispatcher.cgi タイプのスクリプトがある場合の分割用ですが、C:A:D は /app として呼び出されることを想定し、URL の /doit 部分を参照することを想定しているため、それを達成する方法がわかりません。
現在のロケーション ブロックは次のとおりです。
location /app {
root /var/www;
gzip off;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_index index.pl;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
Apache でのセットアップは非常に簡単でした。
ScriptAlias /app/ /var/www/app/
<Directory "/var/www/app">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>