![如何在 apache 中创建一个非常简单的外部 FastCGI 配置?](https://linux22.com/image/564255/%E5%A6%82%E4%BD%95%E5%9C%A8%20apache%20%E4%B8%AD%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E9%9D%9E%E5%B8%B8%E7%AE%80%E5%8D%95%E7%9A%84%E5%A4%96%E9%83%A8%20FastCGI%20%E9%85%8D%E7%BD%AE%EF%BC%9F.png)
我有一个外部启动的 FastCGI 应用程序,它侦听套接字“/tmp/foo.sock”和“/srv/static”中的静态文件目录。Apache 对套接字和目录拥有所有必要的权限。
我需要:所有以“/static”开头的请求都应由 apache 使用“/srv/static”的内容处理。所有其他请求都应由 FastCGI 应用程序处理。这是我当前的虚拟主机配置:
<VirtualHost *:80>
ServerAdmin [email protected]
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' 的第一个参数应该是 'filename',匹配后会导致 apache 将请求委托给外部 FastCGI 应用程序。我这里遗漏了什么?
答案1
根据FastCGI 常见问题解答,将FastCgiExternalServer
行更改为以下
FastCgiExternalServer /srv/static -socket /tmp/foo.sock
然后再试一次。
答案2
FastCgiExternalServer 的第一个参数应该是要重定向的某个文件名。它不必存在。它没有说明支持通配符。我认为使用 /srv/static 不是正确的答案,您希望由 Apache 来处理。