Apache 2、mod_fastcgi、REST:处理对同一应用程序不同 URI 的请求
Apache 2, mod_fastcgi, REST: Handle requests to different URIs with the same application
我正在尝试使用 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,我的应用程序就会运行,并且会 returns 一个 html 测试页面,就像我想要的那样。
尝试例如http://127.0.0.1/foo/bar returns 带有 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 配置的新手,我 maybe/hopefully 只是错过了正确的起点。
如何配置 Apache/mod_fastcgi 将请求发送到 "branch of URIs" 到同一个 FastCGI 进程?有人可以指点一下吗?
关键是要使用别名。我还将 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>
我正在尝试使用 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,我的应用程序就会运行,并且会 returns 一个 html 测试页面,就像我想要的那样。 尝试例如http://127.0.0.1/foo/bar returns 带有 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 配置的新手,我 maybe/hopefully 只是错过了正确的起点。
如何配置 Apache/mod_fastcgi 将请求发送到 "branch of URIs" 到同一个 FastCGI 进程?有人可以指点一下吗?
关键是要使用别名。我还将 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>