<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=FastCGI</id>
	<title>FastCGI - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=FastCGI"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=FastCGI&amp;action=history"/>
	<updated>2026-05-14T22:26:21Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=FastCGI&amp;diff=64454&amp;oldid=prev</id>
		<title>Maximilian.pottgiesser: Die Seite wurde neu angelegt: „= FastCGI =  '''FastCGI''' ist ein Protokoll für die Kommunikation zwischen Webservern und externen Anwendungen, das als Weiterentwicklung des Commo…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=FastCGI&amp;diff=64454&amp;oldid=prev"/>
		<updated>2025-08-26T05:46:49Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „= FastCGI =  &amp;#039;&amp;#039;&amp;#039;FastCGI&amp;#039;&amp;#039;&amp;#039; ist ein &lt;a href=&quot;/index.php?title=Protokoll&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Protokoll (Seite nicht vorhanden)&quot;&gt;Protokoll&lt;/a&gt; für die Kommunikation zwischen &lt;a href=&quot;/index.php/Webserver&quot; title=&quot;Webserver&quot;&gt;Webservern&lt;/a&gt; und externen Anwendungen, das als Weiterentwicklung des Commo…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= FastCGI =&lt;br /&gt;
&lt;br /&gt;
'''FastCGI''' ist ein [[Protokoll]] für die Kommunikation zwischen [[Webserver]]n und externen Anwendungen, das als Weiterentwicklung des [[Common Gateway Interface]] (CGI) konzipiert wurde. FastCGI löst die Performance-Probleme von CGI durch die Wiederverwendung von Prozessen und bietet dabei mehr Flexibilität als eingebettete Lösungen wie [[Apache HTTP Server|Apache]]-Module.&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
&lt;br /&gt;
FastCGI wurde 1996 von '''Open Market''' entwickelt, um die Nachteile des traditionellen CGI zu überwinden. Das Protokoll wurde als offener Standard veröffentlicht und wird heute von praktisch allen modernen Webservern unterstützt. Die Spezifikation ist in RFC-ähnlicher Form dokumentiert und wird von der FastCGI-Community gepflegt.&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
&lt;br /&gt;
=== Grundprinzip ===&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu CGI, das für jede Anfrage einen neuen Prozess startet, verwendet FastCGI '''persistente Prozesse''', die mehrere Anfragen nacheinander bearbeiten können:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Traditionelles CGI:&lt;br /&gt;
Request 1 → [Start Process] → [Execute] → [Terminate] → Response 1&lt;br /&gt;
Request 2 → [Start Process] → [Execute] → [Terminate] → Response 2&lt;br /&gt;
&lt;br /&gt;
FastCGI:&lt;br /&gt;
Request 1 → [Persistent Process] → Response 1&lt;br /&gt;
Request 2 → [Same Process] → Response 2&lt;br /&gt;
Request 3 → [Same Process] → Response 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Protokoll-Architektur ===&lt;br /&gt;
&lt;br /&gt;
FastCGI verwendet ein '''binäres Protokoll''' für die Kommunikation zwischen Webserver und Anwendung:&lt;br /&gt;
&lt;br /&gt;
; '''Records''' : Dateneinheiten mit Header und Body&lt;br /&gt;
; '''Multiplexing''' : Mehrere Requests können gleichzeitig über eine Verbindung laufen&lt;br /&gt;
; '''Streams''' : Verschiedene Datentypen (STDIN, STDOUT, STDERR) werden getrennt übertragen&lt;br /&gt;
&lt;br /&gt;
=== Kommunikationsarten ===&lt;br /&gt;
&lt;br /&gt;
==== TCP-Sockets ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Webserver ←→ TCP:9000 ←→ FastCGI Application&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Vorteile''': Verteilung auf mehrere Server möglich&lt;br /&gt;
* '''Nachteile''': Netzwerk-Overhead, Latenz&lt;br /&gt;
&lt;br /&gt;
==== Unix-Domain-Sockets ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
Webserver ←→ /path/to/socket ←→ FastCGI Application&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Vorteile''': Höhere Performance, geringere Latenz&lt;br /&gt;
* '''Nachteile''': Nur lokal verwendbar&lt;br /&gt;
&lt;br /&gt;
== Vergleich mit anderen Technologien ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Technologie&lt;br /&gt;
! Prozess-Overhead&lt;br /&gt;
! Memory-Sharing&lt;br /&gt;
! Skalierbarkeit&lt;br /&gt;
! Isolation&lt;br /&gt;
|-&lt;br /&gt;
| '''CGI'''&lt;br /&gt;
| Sehr hoch&lt;br /&gt;
| Nein&lt;br /&gt;
| Schlecht&lt;br /&gt;
| Vollständig&lt;br /&gt;
|-&lt;br /&gt;
| '''FastCGI'''&lt;br /&gt;
| Niedrig&lt;br /&gt;
| Nein&lt;br /&gt;
| Sehr gut&lt;br /&gt;
| Gut&lt;br /&gt;
|-&lt;br /&gt;
| '''Apache mod_php'''&lt;br /&gt;
| Mittel&lt;br /&gt;
| Ja&lt;br /&gt;
| Begrenzt&lt;br /&gt;
| Gering&lt;br /&gt;
|-&lt;br /&gt;
| '''Embedded'''&lt;br /&gt;
| Niedrig&lt;br /&gt;
| Ja&lt;br /&gt;
| Begrenzt&lt;br /&gt;
| Keine&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Vorteile ==&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
&lt;br /&gt;
* '''Keine Prozess-Erstellung''' bei jeder Anfrage&lt;br /&gt;
* '''Persistente Datenbankverbindungen''' bleiben erhalten&lt;br /&gt;
* '''Shared Memory''' für häufig verwendete Daten&lt;br /&gt;
* '''Kompilierte Module''' müssen nicht neu geladen werden&lt;br /&gt;
&lt;br /&gt;
=== Skalierbarkeit ===&lt;br /&gt;
&lt;br /&gt;
* '''Load Balancing''' zwischen mehreren FastCGI-Prozessen&lt;br /&gt;
* '''Horizontale Skalierung''' über mehrere Server&lt;br /&gt;
* '''Process Pooling''' für optimale Ressourcen-Nutzung&lt;br /&gt;
* '''Adaptive Skalierung''' basierend auf Last&lt;br /&gt;
&lt;br /&gt;
=== Flexibilität ===&lt;br /&gt;
&lt;br /&gt;
* '''Verschiedene Programmiersprachen''' können verwendet werden&lt;br /&gt;
* '''Unabhängige Updates''' von Webserver und Anwendung&lt;br /&gt;
* '''Verschiedene Versionen''' parallel möglich&lt;br /&gt;
* '''Service-orientierte Architektur''' unterstützt&lt;br /&gt;
&lt;br /&gt;
=== Stabilität ===&lt;br /&gt;
&lt;br /&gt;
* '''Prozess-Isolation''' verhindert gegenseitige Beeinflussung&lt;br /&gt;
* '''Graceful Restarts''' ohne Downtime möglich&lt;br /&gt;
* '''Fehler-Isolation''' - Absturz betrifft nur einzelne Anfrage&lt;br /&gt;
* '''Resource Limiting''' pro Prozess möglich&lt;br /&gt;
&lt;br /&gt;
== Implementierungen ==&lt;br /&gt;
&lt;br /&gt;
=== Webserver-Unterstützung ===&lt;br /&gt;
&lt;br /&gt;
==== Apache ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
# mod_fcgid&lt;br /&gt;
LoadModule fcgid_module modules/mod_fcgid.so&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Directory &amp;quot;/var/www/html&amp;quot;&amp;gt;&lt;br /&gt;
    SetHandler fcgid-script&lt;br /&gt;
    FCGIWrapper /usr/bin/php-cgi .php&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# mod_proxy_fcgi (Apache 2.4+)&lt;br /&gt;
&amp;lt;FilesMatch \.php$&amp;gt;&lt;br /&gt;
    SetHandler &amp;quot;proxy:fcgi://127.0.0.1:9000&amp;quot;&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== nginx ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
server {&lt;br /&gt;
    listen 80;&lt;br /&gt;
    server_name example.com;&lt;br /&gt;
    root /var/www/html;&lt;br /&gt;
&lt;br /&gt;
    location ~ \.php$ {&lt;br /&gt;
        fastcgi_pass 127.0.0.1:9000;&lt;br /&gt;
        # oder Unix-Socket:&lt;br /&gt;
        # fastcgi_pass unix:/var/run/php-fpm.sock;&lt;br /&gt;
        &lt;br /&gt;
        fastcgi_index index.php;&lt;br /&gt;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;&lt;br /&gt;
        include fastcgi_params;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== lighttpd ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
server.modules += ( &amp;quot;mod_fastcgi&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
fastcgi.server = ( &lt;br /&gt;
    &amp;quot;.php&amp;quot; =&amp;gt; ((&lt;br /&gt;
        &amp;quot;host&amp;quot; =&amp;gt; &amp;quot;127.0.0.1&amp;quot;,&lt;br /&gt;
        &amp;quot;port&amp;quot; =&amp;gt; 9000&lt;br /&gt;
    ))&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== FastCGI-Anwendungen ===&lt;br /&gt;
&lt;br /&gt;
==== PHP-FPM ====&lt;br /&gt;
&lt;br /&gt;
[[PHP-FPM]] ist die bekannteste FastCGI-Implementierung für [[PHP]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
[www]&lt;br /&gt;
listen = 127.0.0.1:9000&lt;br /&gt;
user = www-data&lt;br /&gt;
group = www-data&lt;br /&gt;
pm = dynamic&lt;br /&gt;
pm.max_children = 50&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Python ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
from flup.server.fcgi import WSGIServer&lt;br /&gt;
&lt;br /&gt;
def application(environ, start_response):&lt;br /&gt;
    status = '200 OK'&lt;br /&gt;
    headers = [('Content-Type', 'text/plain')]&lt;br /&gt;
    start_response(status, headers)&lt;br /&gt;
    return ['Hello World from FastCGI!']&lt;br /&gt;
&lt;br /&gt;
if __name__ == '__main__':&lt;br /&gt;
    WSGIServer(application).run()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Ruby ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env ruby&lt;br /&gt;
require 'fcgi'&lt;br /&gt;
&lt;br /&gt;
FCGI.each_cgi do |cgi|&lt;br /&gt;
  cgi.print &amp;quot;Content-Type: text/html\r\n\r\n&amp;quot;&lt;br /&gt;
  cgi.print &amp;quot;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;Hello from Ruby FastCGI!&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Protokoll-Details ==&lt;br /&gt;
&lt;br /&gt;
=== Record-Format ===&lt;br /&gt;
&lt;br /&gt;
Ein FastCGI-Record besteht aus:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    unsigned char version;&lt;br /&gt;
    unsigned char type;&lt;br /&gt;
    unsigned char requestIdB1;&lt;br /&gt;
    unsigned char requestIdB0;&lt;br /&gt;
    unsigned char contentLengthB1;&lt;br /&gt;
    unsigned char contentLengthB0;&lt;br /&gt;
    unsigned char paddingLength;&lt;br /&gt;
    unsigned char reserved;&lt;br /&gt;
    unsigned char contentData[contentLength];&lt;br /&gt;
    unsigned char paddingData[paddingLength];&lt;br /&gt;
} FCGI_Record;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Record-Typen ===&lt;br /&gt;
&lt;br /&gt;
; '''FCGI_BEGIN_REQUEST''' : Startet eine neue Anfrage&lt;br /&gt;
; '''FCGI_PARAMS''' : Überträgt Umgebungsvariablen&lt;br /&gt;
; '''FCGI_STDIN''' : Überträgt Request-Body&lt;br /&gt;
; '''FCGI_STDOUT''' : Response-Daten von der Anwendung&lt;br /&gt;
; '''FCGI_STDERR''' : Fehler-Ausgaben&lt;br /&gt;
; '''FCGI_END_REQUEST''' : Beendet eine Anfrage&lt;br /&gt;
&lt;br /&gt;
=== Multiplexing ===&lt;br /&gt;
&lt;br /&gt;
FastCGI unterstützt '''Request-Multiplexing''' über eine einzige Verbindung:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Connection 1:&lt;br /&gt;
├── Request A (ID: 1)&lt;br /&gt;
├── Request B (ID: 2)  &lt;br /&gt;
└── Request C (ID: 3)&lt;br /&gt;
&lt;br /&gt;
Records können verschachtelt übertragen werden:&lt;br /&gt;
BEGIN_REQUEST(1) → PARAMS(2) → STDIN(1) → BEGIN_REQUEST(3) → ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Konfiguration und Tuning ==&lt;br /&gt;
&lt;br /&gt;
=== Process Management ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
# Statische Prozessanzahl&lt;br /&gt;
PM_STYLE = static&lt;br /&gt;
PM_MAX_CHILDREN = 20&lt;br /&gt;
&lt;br /&gt;
# Dynamisches Management&lt;br /&gt;
PM_STYLE = dynamic&lt;br /&gt;
PM_MAX_CHILDREN = 50&lt;br /&gt;
PM_START_SERVERS = 5&lt;br /&gt;
PM_MIN_SPARE_SERVERS = 5&lt;br /&gt;
PM_MAX_SPARE_SERVERS = 35&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Connection Pooling ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
upstream backend {&lt;br /&gt;
    server 127.0.0.1:9000;&lt;br /&gt;
    server 127.0.0.1:9001;&lt;br /&gt;
    server 127.0.0.1:9002;&lt;br /&gt;
    keepalive 32;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
server {&lt;br /&gt;
    location ~ \.php$ {&lt;br /&gt;
        fastcgi_pass backend;&lt;br /&gt;
        fastcgi_keep_conn on;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Timeout-Einstellungen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
location ~ \.php$ {&lt;br /&gt;
    fastcgi_connect_timeout 60s;&lt;br /&gt;
    fastcgi_send_timeout 60s;&lt;br /&gt;
    fastcgi_read_timeout 60s;&lt;br /&gt;
    fastcgi_buffer_size 128k;&lt;br /&gt;
    fastcgi_buffers 4 256k;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Monitoring und Debugging ==&lt;br /&gt;
&lt;br /&gt;
=== Status-Monitoring ===&lt;br /&gt;
&lt;br /&gt;
Viele FastCGI-Implementierungen bieten Status-Seiten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
http://example.com/fpm-status&lt;br /&gt;
&lt;br /&gt;
Ausgabe:&lt;br /&gt;
pool:                 www&lt;br /&gt;
process manager:      dynamic&lt;br /&gt;
start time:           01/Jan/2024:00:00:00 +0000&lt;br /&gt;
accepted conn:        12345&lt;br /&gt;
active processes:     5&lt;br /&gt;
idle processes:       10&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debugging ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
# Debug-Logging aktivieren&lt;br /&gt;
error_log /var/log/nginx/error.log debug;&lt;br /&gt;
&lt;br /&gt;
# FastCGI-spezifische Parameter loggen&lt;br /&gt;
fastcgi_param HTTP_X_DEBUG_INFO $request_id;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sicherheitsaspekte ==&lt;br /&gt;
&lt;br /&gt;
=== Prozess-Isolation ===&lt;br /&gt;
&lt;br /&gt;
* '''Separate Benutzer''' für verschiedene Anwendungen&lt;br /&gt;
* '''chroot-Umgebungen''' für zusätzliche Isolation&lt;br /&gt;
* '''Resource Limits''' (CPU, Memory, File Descriptors)&lt;br /&gt;
&lt;br /&gt;
=== Netzwerk-Sicherheit ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
# Nur lokale Verbindungen erlauben&lt;br /&gt;
fastcgi_pass 127.0.0.1:9000;&lt;br /&gt;
&lt;br /&gt;
# Bei Unix-Sockets: Dateiberechtigungen&lt;br /&gt;
# chmod 660 /var/run/php-fpm.sock&lt;br /&gt;
# chown www-data:www-data /var/run/php-fpm.sock&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Input-Validation ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
# Gefährliche Parameter blockieren&lt;br /&gt;
if ($fastcgi_script_name ~ \.\.) {&lt;br /&gt;
    return 403;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Upload-Limits&lt;br /&gt;
client_max_body_size 10M;&lt;br /&gt;
fastcgi_param CONTENT_LENGTH $content_length;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Performance-Optimierung ==&lt;br /&gt;
&lt;br /&gt;
=== Caching ===&lt;br /&gt;
&lt;br /&gt;
* '''OPcode-Caching''' bei Skriptsprachen&lt;br /&gt;
* '''Application-Level Caching'''&lt;br /&gt;
* '''FastCGI Cache''' im Webserver&lt;br /&gt;
&lt;br /&gt;
=== Load Balancing ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nginx&amp;quot;&amp;gt;&lt;br /&gt;
upstream fastcgi_backend {&lt;br /&gt;
    least_conn;&lt;br /&gt;
    server 127.0.0.1:9000 weight=3;&lt;br /&gt;
    server 127.0.0.1:9001 weight=2;&lt;br /&gt;
    server 127.0.0.1:9002 weight=1;&lt;br /&gt;
    server 192.168.1.10:9000 backup;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Memory Management ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
# Prozess-Recycling nach X Requests&lt;br /&gt;
PM_MAX_REQUESTS = 1000&lt;br /&gt;
&lt;br /&gt;
# Memory-Limits&lt;br /&gt;
memory_limit = 128M&lt;br /&gt;
max_execution_time = 30&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anwendungsfälle ==&lt;br /&gt;
&lt;br /&gt;
=== Shared Hosting ===&lt;br /&gt;
&lt;br /&gt;
* '''Multi-Tenant-Umgebungen''' mit Isolation&lt;br /&gt;
* '''Verschiedene PHP-Versionen''' parallel&lt;br /&gt;
* '''Resource-Limiting''' pro Kunde&lt;br /&gt;
&lt;br /&gt;
=== High-Performance Websites ===&lt;br /&gt;
&lt;br /&gt;
* '''Horizontale Skalierung''' über mehrere Server&lt;br /&gt;
* '''Load Balancing''' zwischen FastCGI-Backends&lt;br /&gt;
* '''Optimierte Resource-Nutzung'''&lt;br /&gt;
&lt;br /&gt;
=== Microservices ===&lt;br /&gt;
&lt;br /&gt;
* '''Service-spezifische FastCGI-Anwendungen'''&lt;br /&gt;
* '''Unabhängige Deployments'''&lt;br /&gt;
* '''Language-agnostische Architektur'''&lt;br /&gt;
&lt;br /&gt;
== Alternativen ==&lt;br /&gt;
&lt;br /&gt;
* '''[[Common Gateway Interface|CGI]]''': Einfacher, aber langsamer&lt;br /&gt;
* '''WSGI''' (Python): Python-spezifisches Interface&lt;br /&gt;
* '''Rack''' (Ruby): Ruby-spezifisches Interface&lt;br /&gt;
* '''PSGI''' (Perl): Perl-spezifisches Interface&lt;br /&gt;
* '''gRPC/HTTP/2''': Moderne Alternative für Microservices&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* [[PHP-FPM]]&lt;br /&gt;
* [[Common Gateway Interface]]&lt;br /&gt;
* [[nginx]]&lt;br /&gt;
* [[Apache HTTP Server]]&lt;br /&gt;
* [[Webserver]]&lt;br /&gt;
* [[WSGI]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.fastcgi.com/drupal/ Offizielle FastCGI Website]&lt;br /&gt;
* [https://tools.ietf.org/html/rfc3875 CGI/1.1 Specification (RFC 3875)]&lt;br /&gt;
* [https://github.com/FastCGI-Archives/FastCGI.com FastCGI Specification Archive]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Webserver]]&lt;br /&gt;
[[Kategorie:Netzwerkprotokoll]]&lt;br /&gt;
[[Kategorie:PHP]]&lt;br /&gt;
[[Kategorie:Webtechnologie]]&lt;/div&gt;</summary>
		<author><name>Maximilian.pottgiesser</name></author>
	</entry>
</feed>