Skip to content

Feature request: Add fastCGI support please #88

@NobodyXu

Description

@NobodyXu

Most people building websites nowadays use nginx or appache to reverse proxy the real dynamic content server instead of directly expose the underlying server directly as

  • nobody would expose their underlying server directly to outside world, as they would like find CVE in their underlying server or their server would be under attack by hackers.
    The http/https code in nginx and appache are much more battle tested and has less bug.
  • people who really needs to use C++ to write their dynamic content server would probably also use distributed computing and fastCGI is a more efficient protocol to use than http or https
  • performance of https in nginx and appache is probably much better than crow
  • developers are familiar with nginx and appache and know how to tune them. Some might even has special patch applied to them for their own use case
  • Separating https server and content server enables them to run at different privileges:
    The https server could run as root while the content server can run as a normal user.
    Any bug in content server won't cause privilege escalation or crash in https server and the user won't feel the crash of content server as the server can be restarted in background without the https connection being closed.

There are broader audience who needs fastCGI in their content server.

While nginx and appache can also proxy http, it is slower than fastCGI as

  • http is a text based protocol while fastCGI is a binary one
  • fastCGI support multiplexing while http does not
  • fastCGI support unix socket for proxying local server while http does not

and nobody in their right mind would proxy their underlying content server over https as it is too heavy weight.
The right solution here is fastCGI. It is designed for this kind of application, so the experience programming with fastCGI is probably better than http.

Thus I think crow should have fastCGI support as it is extremely important.

I found archive of the specification of fastCGI here and it also has a reference implementation of fastCGI library fcgi2.

There are also kcgi and fastcgipp that are C and C++ server that supports fastCGI.

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureCode based project improvement

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions