nginx and Perl: FastCGI vs reverse proxy (PSGI/Starman)

前端 未结 2 1993
名媛妹妹
名媛妹妹 2021-01-31 10:13

A very popular choice for running Perl web applications these days seems to be behind a nginx webserver proxying requests to either a FastCGI daemon or a PSGI enabled webserver

相关标签:
2条回答
  • 2021-01-31 10:51

    HTTP is well understood by most system administrators and it's easy to debug. There's almost always some kind of reverse proxy already deployed, so it is a piece of cake to just add another configuration stanza to its configuration in order to bring your application up and running in a few seconds. Never tested the speed differances with both settings but on the other hand i never had any problems in that area, so it can't be that bad.

    0 讨论(0)
  • 2021-01-31 10:58

    A reverse proxy setup (e.g. nginx forwarding HTTP requests to Starman) has the following advantages:

    • things are a bit easier to debug, since you can easily hit directly the backend server;

    • if you need to scale your backend server, you can easily use something like pound/haproxy between the frontend (static-serving) HTTP and your backends (Zope is often deployed like that);

    • it can be a nice sidekick if you are also using some kind of outward-facing, caching, reverse proxy (like Varnish or Squid) since it allows to bypass it very easily.

    However, it has the following downsides:

    • the backend server has to figure out the real originating IP, since all it will see is the frontend server address (generally localhost); there is almost an easy way to find out the client IP address in the HTTP headers, but that's something extra to figure out;

    • the backend server does not generally know the orignal "Host:" HTTP header, and therefore, cannot automatically generated an absolute URL to a local resource; Zope addresses this with special URLs to embed the original protocol, host and port in the request to the backend, but it's something you don't have to do with FastCGI/Plack/...;

    • the frontend cannot automatically spawn backend processes, like it could do with FastCGI for instance.

    Pick your favourites pros/cons and make your choice, I guess ;-)

    0 讨论(0)
提交回复
热议问题