如何在 apache 中创建一个非常简单的外部 FastCGI 配置?

如何在 apache 中创建一个非常简单的外部 FastCGI 配置?

我有一个外部启动的 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 来处理。

相关内容