0

我正在尝试使用 Apache 2 和 mod_fastcgi 作为我的传输和安全层来开发 RESTful 服务。

我想要实现的是在发出请求时调用 C++ 应用程序。然后我想使用 HTTP 方法和 URI 来决定(在应用程序内部)应该访问哪些(内部)资源以及以哪种方式访问​​。

调用我的 C++-FastCGI 应用程序有效(位于 @ /var/www/html/foo/fastcgi_test)。但只有特定的 URI - 我的二进制文件所在的 URI:

如果我在浏览器中打开http://127.0.0.1/foo/fastcgi_test我的应用程序会运行并返回我想要的 html 测试页面。尝试例如http://127.0.0.1/foo/bar返回一个带有 404 的页面。但我希望调用相同的应用程序(fastcgi_test)。

我的配置(到目前为止)如下所示:

<IfModule mod_fastcgi.c>   
  FastCgiIpcDir /var/lib/apache2/fastcgi    
  <Location /foo>
    SetHandler fastcgi-script   
  </Location>    
  FastCgiServer /var/www/html/foo/fastcgi_test -flush    
</IfModule>

我阅读了mod_fastcgi 手册并翻阅了 Apache 手册,但我找不到正确的提示。看来我没有寻找正确的关键词。由于我对 Apache 配置非常陌生,因此我可能/希望只是错过了正确的起点。

如何配置 Apache/mod_fastcgi 将请求发送到“URI 分支”到同一个 FastCGI 进程?有人可以提供指针吗?

4

1 回答 1

0

关键是使用别名。我还将 FastCGI 程序从 Apache 的内容区域移出到一个单独的目录 (/var/www/fastcgi)。

我的解决方案如下所示:

<IfModule mod_fastcgi.c>
  FastCgiIpcDir /var/lib/apache2/fastcgi
  <Directory /var/www/fastcgi>
    SetHandler fastcgi-script
  </Directory>
  <Location "/foo">
    Require all granted
  </Location>
  FastCgiServer /var/www/fastcgi/fastcgi_test -flush
  AliasMatch "/foo(.*)" "/var/www/fastcgi/fastcgi_test"
</IfModule>
于 2015-08-18T11:30:07.233 回答