Назад | Перейти на главную страницу

FastCGI + Apache: как сопоставить URL-адрес с конкретным двоичным файлом fastcgi

Я написал два приложения fastcgi на C ++ (foo и foobar). Я запускаю apache 2.2 (prefork) с mod_fcgid на Ubuntu 10.x.

Я хочу иметь возможность настроить apache так, чтобы:

http: // mywebsite / some / path1? param1 = value1 & param2 = value2

запустит приложение fastcgi foo

И

mywebsite / another / path1? param1 = value1 & param2 = value2

запустит приложение fastcgi foobar

Примечание. Указанный выше URL-адрес намеренно недействителен (отсутствует тип протокола), поскольку я не могу опубликовать более одной ссылки в этом вопросе.

Как мне настроить apache для этого?

Самый простой способ - использовать директиву FcgidWrapper с включенным параметром virtual. Это означает, что Apache даже не будет пытаться найти «настоящий» файл, а просто вызовет сценарий fcgi.

DocumentRoot /whatever

<Directory /whatever/some/path1>
    FcgidWrapper /elsewhere/bin/foo virtual
</Directory>

<Directory /whatever/another/path1>
    FcgidWrapper /elsewhere/bin/foobar virtual
</Directory>

В качестве альтернативы вы можете использовать mod_rewrite примерно так:

DocumentRoot /whatever

<Directory /whatever>
    RewriteRule /some/path1 /fcgi/foo 
    RewriteRule /another/path1 /fcgi/foobar
</Directory>

<Directory /whatever/fcgi>
    SetHandler fcgid-script
</Directory>