Apache 2,mod_fastcgi,REST:使用相同的应用程序处理对不同URI的请求

时间:2015-08-17 16:53:47

标签: apache rest mod-fastcgi

我正在尝试使用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 manual并挖掘了Apache手册,但我找不到正确的提示。我似乎没有找到正确的关键词。 由于我是Apache配置的新手,我可能/希望错过正确的起点。

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

1 个答案:

答案 0 :(得分: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>