У меня есть запущенное извне приложение FastCGI, которое прослушивает сокет '/tmp/foo.sock' и каталог статических файлов в '/ srv / static'. Apache имеет все необходимые разрешения для сокета и каталогов.
Что мне нужно: все запросы, начинающиеся с '/ static', должны обрабатываться apache с использованием содержимого '/ srv / static'. Все остальные запросы должны обрабатываться приложением FastCGI. Вот моя текущая конфигурация виртуального хоста:
<VirtualHost *:80>
ServerAdmin foo@bar.com
ServerName www.foo.com
ServerAlias foo.com
Alias /static /srv/static
FastCgiExternalServer /* -socket /tmp/foo.sock
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
</VirtualHost>
Несмотря на то, что это кажется простым, это вызывает у меня головную боль. В соответствии с http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html#FastCgiExternalServer первым параметром FastCgiExternalServer должно быть имя файла, которое при совпадении приведет к тому, что apache делегирует запрос внешнему приложению FastCGI. Что мне здесь не хватает?
Первым аргументом FastCgiExternalServer должно быть имя файла, который будет перенаправлять. Этого не должно быть. Это не говорит о том, что подстановочный знак поддерживается. Я не думаю, что использование / srv / static - правильный ответ, вы хотите, чтобы это выполнял Apache.
Согласно FastCGI FAQ, изменить FastCgiExternalServer
линия ниже
FastCgiExternalServer /srv/static -socket /tmp/foo.sock
и попробуй еще раз.