Dies ist eine experimentelle Implementierung des SPDY -Protokolls von Google in C.
Diese Bibliothek bietet die Implementierung von SPDY Version 2, 3 und 3.1. Es führt keine E/A -Operationen aus. Wenn die Bibliothek sie benötigt, ruft sie die von der Anwendung bereitgestellten Rückruffunktionen auf. Es enthält auch keinen Ereignisabfragemechanismus, sodass die Anwendung die Art und Weise, wie die Bearbeitung von Ereignissen bearbeitet wird, frei wählen. Dieser Bibliothekscode hängt nicht von einer bestimmten SSL -Bibliothek ab (mit Ausnahme von Beispielen, die von OpenSSL 1.0.1 oder höher abhängen).
Dieses Projekt entwickelt auch SPDY -Client, Server und Proxy auf der SPDYLAY -Bibliothek. Siehe Abschnitt SPDY -Client- und Serverprogramme.
Die meisten SPDY/2, SPDY/3- und SPDY/3.1 -Funktionalität wurden implementiert. In beiden Versionen war die direkte Unterstützung von Server-Push noch nicht verfügbar. Die Anwendung kann jedoch mit primitiven APIs einen Server-Push erreichen.
Wie nachstehend beschrieben, können wir SPDY -Client und Server mit der aktuellen SPDYLAY -API erstellen.
Die folgenden Pakete sind erforderlich, um die Bibliothek zu erstellen:
Um die Unit -Testprogramme zu erstellen und auszuführen, sind die folgenden Pakete erforderlich:
Um die Beispielprogramme zu erstellen und auszuführen, werden die folgenden Pakete benötigt:
So aktivieren Sie die Option -a -Option (das verknüpfte Assets aus der heruntergeladenen Ressource abgerufen) in spdycat (eines des Beispielprogramms) sind die folgenden Pakete benötigt:
So erstellen Sie SPDY/HTTPS zu HTTP Reverse Proxy shrpx (eines des Beispielprogramms), die folgenden Pakete werden benötigt:
Wenn Sie Ubuntu 12.04 verwenden, benötigen Sie die folgenden Pakete installiert:
$ APT-GET Installieren Sie Autoconf Automake Autotools-dev Libtool pkg-config zlib1g-dev libcunit1-dev libsl-dev libxml2-dev libevent-dev
Das Gebäude aus Git ist einfach, aber bitte stellen Sie sicher, dass zumindest Autoconf 2.68 verwendet wird:
$ autoreconf -i $ Automake $ autoconf $ ./configure $ make
Um Dokumentation zu erstellen, rennen Sie:
$ mach html
Die Dokumente werden unter doc/manual/html/ generiert.
Die generierten Dokumente werden nicht mit make install installiert.
In diesem Abschnitt beschreiben wir kurz, wie Android-Binärdien mit Android NDK Cross-Compiler unter Debian Linux aufgebaut werden.
Wir bieten android-config und android-make Skripte an, um den Build zu vereinfachen. Um diese Skript zum Laufen zu bringen, muss NDK Toolchain auf folgende Weise installiert werden. Lassen Sie zunächst die Umgebungsvariable ANDROID_HOME einführen. Wir müssen Toolchain unter $ANDROID_HOME/toolchain installieren. Ein Benutzer kann den Pfad für ANDROID_HOME frei auswählen. Um ToolChain beispielsweise unter $ANDROID_HOME/toolchain zu installieren, tun Sie dies im Verzeichnis, in dem NDK ausgepackt ist:
$ Build/Tools/make-standalone-toolchain.sh --Platform = Android-9--install-dir = $ android_home/Toolchain
Die Plattformebene ist hier nicht wichtig, da wir keine Android -spezifischen C/C ++ - API verwenden.
Die abhängigen Bibliotheken wie OpenSSL und LibEvent sollten mit der Toolchain erstellt und unter $ANDROID_HOME/usr/local installiert werden. Wir empfehlen, diese Bibliotheken als statische Bibliothek zu erstellen, um die Bereitstellung zu erleichtern. Der LIBXML2 -Support ist derzeit deaktiviert.
Wir verwenden Zlib, das mit Android NDK ausgestattet ist, sodass wir es nicht alleine bauen müssen.
Vor der Ausführung android-config und android-make muss die Umgebungsvariable ANDOIRD_HOME auf den richtigen Pfad verweisen.
Führen Sie nach android-config android-make aus, um Quellen zu erstellen. android-make beinhaltet nur Pfad zum Cross-Compiler in PATH und Run Make. Wenn Sie also den Pfad zum CORSS -Compiler selbst einschließen, können Sie einfach ausführen, um Spylay und Tools wie gewohnt zu erstellen.
Die öffentliche API -Referenz ist online verfügbar. Besuchen Sie http://tatsuhiro-t.github.io/spdylay/. Alle öffentlichen APIs befinden sich in spdylay/spdylay.h . Alle öffentlichen API -Funktionen sowie die Typedefs der Rückruffunktion sind dokumentiert.
Das SRC -Verzeichnis enthält SPDY -Client- und Server -Implementierungen mithilfe der SPDYLAY -Bibliothek. Diese Programme sollen sicherstellen, dass die SPDYLAY -API für die reale Implementierung und auch für Debugging -Zwecke akutallisch verwendbar ist. Bitte beachten Sie, dass OpenSSL mit NPN -Unterstützung erforderlich ist, um diese Programme zu erstellen und auszuführen. Zum Zeitpunkt dieses Schreibens unterstützt der OpenSSL 1.0.1 NPN.
Der SPDY -Client heißt spdycat . Es ist ein toter einfacher Downloader wie WGet/Curl. Es stellt eine Verbindung zum SPDY-Server her und erhält die in der Befehlszeile angegebenen Ressourcen:
$ src/spdycat -h
Verwendung: spdycat [-Oansv23] [-t <sekunden>] [-W <FOSTER_BITS>] [-Cert = <cert>]
[--key = <Key>] [--no-tls] [-d <Datei>] [-m <n>] [-p <proxy_host>]]
[-P <proxy_port>] <Uri> ...
Optionen:
-V, --verbose Print Debug -Informationen wie Empfang/
Übertragung von Frames und Namen/Wertpaaren.
-n,-Null-out-Verwirrung heruntergeladene Daten.
-O,-Remote-Namen Speichern Sie herunterladen Download-Daten im aktuellen Verzeichnis.
Der Dateiname wird von URI abgeschlossen. Wenn Uri
endet mit '/', 'index.html' wird als verwendet
Dateiname. Noch nicht implementiert.
-2, - -spdy2 Verwenden Sie nur SPDY/2.
-3, - -spdy3 Verwenden Sie nur SPDY/3.
-SPDY3-1 Verwenden Sie nur SPDY/3.1.
-t, -Timeout = <n> Timeout Jede Anfrage nach <n> Sekunden.
-W,-Window-Bits = <n>
Legt die anfängliche Fenstergröße auf 2 ** <n> fest.
-A,-GET-Assets Download-Vermögenswerte wie Stylesheets, Bilder
und Skriptdateien, die aus dem heruntergeladenen verlinkt sind
Ressource. Nur Links, deren Ursprünge die sind
Gleiches gilt für die Verknüpfungsressource
heruntergeladen.
-S, -stat -druckstatistik.
-H, -Header fügen Sie den Anfragen einen Header hinzu.
-cert = <cert> Verwenden Sie die angegebene Client-Zertifikatendatei.
Die Datei muss im PEM -Format vorliegen.
--Key = <Key> Verwenden Sie die private Schlüsseldatei der Client. Die Datei
muss im PEM -Format sein.
-no-tls deaktivieren SSL/TLS. Verwenden Sie -2, -3 oder - -spdy3-1 bis
Geben Sie die SPDY -Protokollversion an.
-D, - -data = <Datei> Postdatei auf Server. Wenn - Daten gegeben sind, Daten
wird von Stdin gelesen.
-M, - -multiply = <n> Anfordern Sie jede URI <N> -Fzeit. Standardmäßig gleich
URI wird nicht zweimal angefordert. Diese Option
deaktiviert es auch.
-p, --Proxy = <Host> Verwenden Sie diesen Host als SPDY -Proxy
-P, --proxy-port = <Port>
Verwenden Sie dies als Port des SPDY -Proxy, wenn
Einer ist eingestellt
-farbige Kraft farbige Protokollausgabe.
$ src/spdycat -nv https://www.google.com/
[0.021] NPN Wählen Sie Nächstes Protokoll: Der Remote -Server bietet an:
* spdy/4a4
* spdy/3.1
* spdy/3
* http/1.1
NPN wählte das Protokoll aus: SPDY/3.1
[0.029] Handshake vollständig
[0.029] Recv -Einstellungen Frame <Version = 3, Flags = 0, Länge = 20>
(NIV = 2)
[4 (1): 100]
[7 (0): 1048576]
[0.029] Recv Window_UpDate Frame <Version = 3, Flags = 0, Länge = 8>
(Stream_id = 0, Delta_Window_Size = 983040)
[0.029] Senden Syn_Stream Frame <Version = 3, Flags = 1, Länge = 221>
(Stream_id = 1, assoc_stream_id = 0, Pri = 3)
: Host: www.google.com
: Methode: Get
:Weg: /
: Schema: https
: Version: http/1.1
akzeptieren: */*
Akzeptanzkodierung: Gzip, Deflate
Benutzer-Agent: SPDYLAY/1.2.0-dev
[0.080] recv syn_reeply Frame <Version = 3, Flags = 0, Länge = 619>
(Stream_id = 1)
: Status: 302 gefunden
: Version: http/1.1
Alternativ-Protokoll: 443: Quic
Cache-Kontroll: Privat
Inhaltslänge: 262
Inhaltstyp: Text/HTML; charset = utf-8
Datum: Di, 19. November 2013 13:47:18 GMT
Ort: https://www.google.co.jp/
Server: GWS
X-Frame-Optionen: Sameorigin
X-XSS-Schutz: 1; Modus = Block
[0.080] Recv -Datenrahmen (Stream_id = 1, Flags = 1, Länge = 262)
[0.080] Senden Sie Goaway Frame <Version = 3, Flags = 0, Länge = 8>
(last_good_stream_id = 0)
SPDY Server heißt spdyd und serviert statische Dateien. Es handelt sich um Einzelfaden- und Multiplex-Verbindungen mit nicht blockierender Sockel. Die statischen Dateien werden unter Verwendung des Blockierungs -E/A -Systemaufrufs read(2) . Es spricht SPDY/2 und SPDY/3:
$ src/spdyd - -htdocs =/your/htdocs/-v 3000 server.key server.crt
IPv4: Hören Sie Port 3000 an
IPv6: Hören Sie Port 3000 an
Das verhandelte nächste Protokoll: SPDY/3.1
[id = 1] [1.296] Senden Sie Einstellungen Frame <Version = 3, Flags = 0, Länge = 12>
(NIV = 1)
[4 (0): 100]
[id = 1] [1.297] recv syn_stream Frame <Version = 3, Flags = 1, Länge = 228>
(Stream_id = 1, assoc_stream_id = 0, Pri = 3)
: Host: Localhost: 3000
: Methode: Get
: Pfad: /Readme
: Schema: https
: Version: http/1.1
akzeptieren: */*
Akzeptanzkodierung: Gzip, Deflate
Benutzer-Agent: SPDYLAY/1.2.0-dev
[id = 1] [1.297] Senden syn_reeprs -rahmen <Version = 3, Flags = 0, Länge = 116>
(Stream_id = 1)
: Status: 200 OK
: Version: http/1.1
Cache-Kontroll: max-Alter = 3600
Inhaltslänge: 66
Datum: Di, 19. November 2013 14:35:24 GMT
Last-Modified: Di, 17. Januar 2012 15:39:01 GMT
Server: spdyd sptylay/1.2.0-dev
[id = 1] [1.297] Datenrahmen senden (Stream_id = 1, Flags = 0, Länge = 66)
[id = 1] [1.297] Datenrahmen senden (Stream_id = 1, Flags = 1, Länge = 0)
[id = 1] [1.297] Stream_id = 1 geschlossen
[id = 1] [1.297] Recv Goaway Frame <Version = 3, Flags = 0, Länge = 8>
(last_good_stream_id = 0)
[id = 1] [1,297] geschlossen
Derzeit braucht spdyd epoll oder kqueue .
Für SHRPX -Benutzer, die SHRPX als SPDY -Proxy verwenden: Bitte überlegen Sie, ob Sie auf NGHTTPX migrieren, das am NGHTTP2 -Projekt entwickelt wurde. NGHTTPX unterstützt auch SPDY -Proxy.
Der shrpx ist ein Multi-Thread-Reverse-Proxy für SPDY/HTTPS. Es wandelt den Spdy/HTTPS -Verkehr in einfache HTTP um. Es wird ursprünglich als Reverse -Proxy entwickelt, hat aber jetzt andere Betriebsmodi wie einen Frontend -Stürmer -Proxy. Zum Beispiel kann mit --spdy-proxy ( -s in ShortHand) Option als sicherer SPDY -Proxy mit einem Proxy (z. B. Tintenfisch) im Backend verwendet werden. Mit --cliet-proxy ( -p ) -Option wirkt sie sich wie ein Vorwärts -Vorwärtsbefugnis von Ordinaly, erwartet jedoch einen sicheren SPDY -Proxy im Backend. Somit wird es zu einem Adapter, um den SPDY -Proxy für Clients zu sichern, was den sicheren SPDY -Proxy nicht unterstützt. Der andere bemerkenswerte Betriebsmodus ist --spdy-relay , das nur den Spdy/HTTPS-Verkehr in das Backend in SPDY weiterleitet. Die folgende Tabelle fasst die Betriebsmodi zusammen.
| Modusoption | Frontend | Backend | Notiz |
|---|---|---|---|
| Standard | Spdy/https | Http | Reverse Proxy |
--spdy | Spdy/https | Http | SPDY Proxy |
--spdy-relay | Spdy/https | Spdy | |
--client | Http | Spdy | |
--client-proxy | Http | Spdy | Forward Proxy |
Der shrpx unterstützt die Konfigurationsdatei. Siehe Option --conf -Konfigurationsdatei shrpx.conf.sample .
Wir beschreiben hier kurz die Architektur von shrpx . Es verfügt über einen speziellen Thread, der auf Server -Sockets hört. Wenn es die eingehende Verbindung akzeptierte, wird der Dateideskriptor der eingehenden Verbindung an einen der Arbeiter -Thread übergeben. Jeder Arbeiter-Thread verfügt über eine eigene Ereignisschleife und kann viele Verbindungen mit nicht blockierenden E/A verarbeiten. Die Anzahl des Worker-Threads kann mit der Befehlszeilenoption angegeben werden. Die Libervent wird verwendet, um das Netzwerk-Netzwerk-E/A-Netzwerk zu verarbeiten.
Hier sind die Befehlszeilenoptionen:
$ src/shrpx -h
Verwendung: Shrpx [-dh] [-s | --client | -p] [-b <host, port>]
[-f <host, port>] [-n <cores>] [-c <num>] [-l <pegel>]
[Optionen ...] [<PRIVAL_KEY> <Scert>]
Ein Reverse -Proxy für SPDY/HTTPS.
Positionsargumente:
<PRIVAL_KEY> Pfad zum privaten Schlüssel des Servers setzen. Erforderlich
Es sei denn, entweder -P oder -Client wird angegeben.
<Cert> Pfad zum Serverzertifikat festlegen. Erforderlich
Es sei denn, entweder -P oder -Client wird angegeben.
Optionen:
Verbindungen:
-B, - -Backend = <Host, Port>
Backend -Host und Port einstellen.
Standard: '127.0.0.1,80' '
-f, - -Frontend = <Host, Port>
Setzen Sie Frontend Host und Port.
Standard: '0.0.0.0,3000' '
-Backlog = <num> Backlog-Größe einstellen.
Standard: 256
-Backend-IPV4 Resolve Backend Hostname an IPv4-Adresse
nur.
-Backend-IPV6 Resolve Backend Hostname an IPv6-Adresse
nur.
Leistung:
-n, --worker = <cores>
Stellen Sie die Anzahl der Arbeiterfäden ein.
Standard: 1
-Read-Rate = <rate> Maximale durchschnittliche Lesequote für Frontend festlegen
Verbindung. Einstellen 0 auf diese Option bedeutet
Die Lesequote ist unbegrenzt.
Standard: 1048576
-Read-burst = <größe>
Stellen Sie die maximale Leseburfengröße auf Frontend ein
Verbindung. Einstellen 0 auf diese Option bedeutet
Lesen Sie die Burst -Größe unbegrenzt.
Standard: 4194304
---Write-rate = <rate>
Stellen Sie die maximale durchschnittliche Schreibrate für Frontend ein
Verbindung. Einstellen 0 auf diese Option bedeutet
Schreibrate ist unbegrenzt.
Standard: 0
---Write-burst = <größe>
Stellen Sie die maximale Schreibburstgröße auf Frontend ein
Verbindung. Einstellen 0 auf diese Option bedeutet
Schreibburstgröße ist unbegrenzt.
Standard: 0
Time-out:
-Frontend-Spdy-Read-Timeout = <sec>
Lesen Sie die Zeitlimit für SPDY Frontend an
Verbindung. Standard: 180
-Frontend-Read-Timeout = <sec>
Lesen Sie die Timeout für nicht-spdy Frontend an
Verbindung. Standard: 180
-Frontend-Write-Timeout = <sec>
Geben Sie Schreibzeitüberschreitungen für SPDY und
Nicht-Spdy-Frontenden.
Verbindung. Standard: 60
-Backend-Read-Timeout = <sec>
Lesen Sie die Timeout für die Backend -Verbindung an.
Standard: 900
-Backend-Write-Timeout = <sec>
Geben Sie die Schreibzeitüberschreitung für das Backend an
Verbindung. Standard: 60
-Backend-Keep-Alive-Timeout = <sec>
Geben Sie eine Zeitlimit für das Backend an
Verbindung. Standard: 60
-Backend-http-proxy-uri = <uri>
Geben Sie Proxy URI in der Form an
http: // [user>: <pass>@] <Proxy>: <Port>. Wenn
Ein Proxy erfordert eine Authentifizierung, angeben
<Bener> und <pass>. Beachten Sie, dass sie sein müssen
Richtig prozentualcodiert. Dieser Proxy wird verwendet
Wenn die Backend -Verbindung SPDY ist. Erste,
eine Verbindungsanforderung an den Stellvertreter machen und
es verbindet sich mit dem Backend im Namen von
Shrpx. Dies bildet Tunnel. Danach Shrpx
führt SSL/TLS -Handshake mit dem durch
stromabwärts durch den Tunnel. Die Zeitüberschreitungen
Beim Verbinden und Anforderungen an Verbindung herstellen
Kann durch-Backend-Read-Timeout angegeben werden
und-Backend-Write-Timeout-Optionen.
SSL/TLS:
-Ciphers = <Suite> SET ERGEBNIGTE CIPHER-LISTE. Das Format der
Die String ist in OpenSSL -Chiffren (1) beschrieben.
Wenn diese Option verwendet wird, ordnen
ist implizit aktiviert.
-Donor-Kippher-Ordnung
Ehrenserver -Chiffre -Bestellung, die dem geben
Fähigkeit, Biestangriffe zu mildern.
-k, --Inecure, wenn sie mit -p oder -Client verwendet werden, nicht überprüfen
Backend Server -Zertifikat.
-Cacert = <path>, wenn mit -p oder -Client, Pfad auf
Vertrauenswürdige CA -Zertifikatdatei.
Die Datei muss im PEM -Format vorliegen. Es kann
mehrere Zertifikate enthalten. Wenn der
Linked OpenSSL ist so konfiguriert, dass das System geladen wird
breite Zertifikate werden geladen
bei Startup unabhängig von dieser Option.
-privat-key-passwd-file = <filepath>
Pfad zur Datei, die Passwort für die enthält
Der private Schlüssel des Servers. Wenn keiner gegeben ist und
Der private Schlüssel ist passwortgeschützt
interaktiv angefordert werden.
--Subcert = <Keypath>: <certPath>
Geben Sie ein zusätzliches Zertifikat und privat an
Schlüsseldatei. SHRPX wählt Zertifikate aus
Basierend auf dem vom Client angegebenen Hostnamen
Verwenden von TLS SNI -Erweiterung. Diese Option kann sein
Mehrfach verwendet.
-Backend-TLS-Sni-Feld = <Host>
Stellen Sie den Inhalt des TLS SNI explizit fest
Verlängerung. Dies wird standardmäßig zum Backend sind
Hostname.
--dh-param-file = <path>
Pfad zur Datei, die DH -Parameter enthält in
PEM -Format. Ohne diese Option dhe Chiffre
Suiten sind nicht verfügbar.
-Erfordern und überprüfen Sie das Client-Zertifikat.
-reverify-client-cacert = <path>
Pfad zur Datei, die CA -Zertifikate enthält
Um das Client -Zertifikat zu überprüfen.
Die Datei muss im PEM -Format vorliegen. Es kann
mehrere Zertifikate enthalten.
--Client-privat-key-file = <path>
Pfad zur Datei, die Client privat enthält
Schlüssel, der in der Backend -Client -Authentifizierung verwendet wird.
--Client-Cert-file = <path>
Pfad zur Datei, die Client enthält
Zertifikat, das im Backend -Client verwendet wird
Authentifizierung.
-tls-proto-list = <List>
Komma abgegrenzte Liste des SSL/TLS -Protokolls an
aktiviert sein.
Die folgenden Protokolle sind verfügbar:
TLSV1.2, TLSV1.1, TLSV1.0, SSLV3
Der Name Matching erfolgt in der Fall-Unempfindlichkeit
Benehmen.
Der Parameter muss durch eine einzelne abgegrenzt werden
Nur Komma und weiße Räume werden behandelt
als Teil der Protokollzeichenfolge.
Standard: TLSV1.2, TLSV1.1, TLSV1.0
Spdy:
-c,--spdy-max-concurrent-Streams = <num>
Setzen Sie die maximale Anzahl der gleichzeitigen
Streams in einer SPDY -Sitzung.
Standard: 100
-Frontend-SPDY-Window-Bits = <n>
Legt die anfängliche Fenstergröße von pro Stream von fest
SPDY Frontend -Verbindung zu 2 ** <n>.
Standard: 16
-Frontend-Spdy-Connection-Window-Bits = <n>
Legt die Fenstergröße von SPDY pro Verbundenheit fest
Frontend -Verbindung zu 2 ** <n>.
Standard: 16
-Frontend-spdy-no-tls
Deaktivieren Sie SSL/TLS auf Frontend SPDY
Verbindungen. Das SPDY -Protokoll muss angegeben werden
Verwenden Sie-Frontend-Spdy-Proto. Diese Option
Deaktiviert auch Frontend HTTP/1.1.
-Frontend-Spdy-Proto
Geben Sie das in Frontend verwendete SPDY -Protokoll an
Verbindung, wenn-Frontend-spdy-no-tls ist
gebraucht. Standard: SPDY/3.1
-Backend-spdy-window-Bits = <n>
Legt die anfängliche Fenstergröße von pro Stream von fest
SPDY -Backend -Verbindung zu 2 ** <n>.
Standard: 16
-Backend-spdy-Connection-Window-Bits = <n>
Legt die Fenstergröße von SPDY pro Verbundenheit fest
Backend -Verbindung zu 2 ** <n>.
Standard: 16
-Backend-spdy-no-tls
Deaktivieren Sie SSL/TLS auf Backend SPDY -Verbindungen.
Das SPDY -Protokoll muss verwendet werden
-Backend-Spdy-Proto
-Backend-Spdy-Proto
Geben Sie das im Backend verwendete SPDY -Protokoll an
Verbindung, wenn-Backend-spdy-no-tls verwendet wird.
Standard: SPDY/3.1
Modus:
-S,--spdy-proxy aktivieren den sicheren SPDY-Proxy-Modus.
-SPDY-BRIDGE kommunizieren mit dem Backend in SPDY. Daher
Die eingehenden SPDY/HTTPS -Verbindungen sind
konvertiert in SPDY Connection und weitergeleitet an
das Backend. Siehe-Backend-Http-Proxy-uri
Option, wenn Sie hinter dem Proxy stehen und wollen
Um mit dem äußeren SPDY -Proxy eine Verbindung herzustellen.
-Client, anstatt die SPDY/HTTPS-Verbindung zu akzeptieren,
Akzeptieren Sie die HTTP -Verbindung und kommunizieren Sie mit
Backend -Server in SPDY. Shrpx als
Verwenden Sie stattdessen eine Vorwärts -Proxy, verwenden Sie -P -Option.
-P,-Client-Proxy-Like-Client Option, aber es erfordert auch
Der Anfragepfad von Frontend muss sein
ein absoluter URI, geeignet für den Gebrauch als
Forward Proxy.
Protokollierung:
-L,--log-Level = <pegel>
Legen Sie die Schwere der Protokollausgabe ein.
Info, Warnung, Fehler und tödlich.
Standard: Warnung
-Accesslog Simple AccessLog nach Stderr.
-Syslog-Protokollnachrichten an syslog.
-syslog-facility = <facility>
Setzen Sie die Syslog -Einrichtung.
Standard: Daemon
MISC:
--Add-X-Forward-for
Appenden
nachgelagerte Anfrage.
-no-via nicht an über Header-Feld angehängt. Wenn via
Das Kopffeld wird empfangen, es bleibt übrig
unverändert.
-D, - -daemon im Hintergrund. Wenn -D verwendet wird, die
Das aktuelle Arbeitsverzeichnis wird in '/' geändert.
-Pid-file = <Path> Pfad einstellen, um die PID dieses Programms zu speichern.
--User = <Benerhöre> Führen Sie dieses Programm als Benutzer aus. Diese Option ist
verwendet, um Root -Privilegien fallen zu lassen.
-Conf = <Path> Lastkonfiguration vom Pfad.
Standard: /etc/shrpx/shrpx.conf
-V, --version Druckversion und Beenden.
-h, -Help diese Hilfe und Ausgang.
Für diejenigen unter Ihnen, die neugierig sind, ist shrpx eine Abkürzung von "spdy/https to http Reverse Proxy".
Ohne eine von -s , --spdy-bridge , -p und --client -Optionen arbeitet shrpx als Reverse -Proxy zum Backend -Server:
Client <-(spdy, https)-> shrpx <-(http)-> Webserver
[Reverse Proxy]
Mit -s -Option funktioniert es als sicherer SPDY -Proxy:
Client <-(spdy, https)-> shrpx <-(http)-> Proxy
[SPDY Proxy] (z. B. Tintenfisch)
Der Client im obigen muss so konfiguriert werden, dass SHRPX als sicherer SPDY -Proxy verwendet wird.
Zum Zeitpunkt dieses Schreibens ist Chrome der einzige Browser, der sichere SPDY -Proxy unterstützt. Die einzige Möglichkeit, Chrome für die Verwendung von Secure SPDY Proxy zu konfigurieren, ist das Erstellen von Proxy.PAC -Skript wie folgt:
Funktion findProxyForurl (URL, Host) {
zurück "https serveraddr: port";
}
SERVERADDR und PORT ist der Hostname/die Adresse und der Port des Maschine SHRPX ausgeführt. Bitte beachten Sie, dass Chrome ein gültiges Zertifikat für einen sicheren SPDY -Proxy benötigt.
Führen Sie dann Chrome mit den folgenden Argumenten aus:
$ google-chrome --proxy-pac-url = file: //patpat/to/proxy.pac --use-npn
Notiz
Zum Zeitpunkt dieses Schreibens begrenzt Chrom 24 die maximalen gleichzeitigen Verbindungen zum Proxy auf 32. Aufgrund der Einschränkung des Socket -Pool -Handlings in Chrom wird es schnell ausgefüllt, wenn der SPDY -Proxy verwendet wird und viele SPDY -Sitzungen festgelegt werden. Wenn es die Grenze erreicht, werden die neuen Verbindungen einfach blockiert, bis vorhandene Verbindungen abgestimmt sind. (Siehe Chrome Ausgabe 92244). Die Problemumgehung besteht darin, die Anzahl der maximalen Verbindungen hoch zu machen, beispielsweise 99, was am höchsten ist. Dazu müssen Sie die sogenannte Richtlinienanlage ändern. Einzelheiten finden Sie unter Richtlinienvorlagen, wie Sie die Richtlinieneinrichtungen auf der von Ihnen verwendeten Plattform ändern. Der von uns gesuchte politische Name ist MaxConnectionSperproxy beispielsweise, wenn Sie Linux verwenden, den in Linux Quick Start und erstellten Anweisungen und erstellen /etc/opt/chrome/policies/managed/test_policy.json -Datei mit den folgenden Inhalten und Neustart von Chrome:
{
"MaxConnectionSperproxy": 99
}
Mit --spdy-bridge akzeptiert es SPDY/HTTPS-Verbindungen und kommuniziert mit Backend in SPDY:
Client <-(spdy, https)-> Shrpx <-(spdy)-> Web- oder SPDY-Proxy usw.
[SPDY BRIDGE] (z. B. SHRPX -S)
Mit -p -Option fungiert es als Forward -Proxy und erwartet, dass das Backend sichere SPDY -Proxy ist:
Client <-(http)-> shrpx <-(spdy)-> sicherer SPDY-Proxy
[Forward Proxy] (z.
Der Client muss so konfiguriert werden, dass SHRPX als Forward -Proxy verwendet wird.
In dieser Konfiguration können Clients, die sich nicht für einen Secure SPDY -Proxy unterstützen, Secure SPDY Proxy über shrpx verwenden. Wenn diese Konfiguration shrpx in derselben Box oder das gleiche Netzwerk mit den Clients einbringt, können Sie diesen Clients die Vorteile eines sicheren SPDY -Proxys bringen. Da die maximale Anzahl von Verbindungen pro Server in der Proxy -Verbindung immer noch gilt, ist die Leistungsverstärkung nicht offensichtlich. Wenn beispielsweise die maximale Anzahl von Verbindungen pro Server 6 beträgt, blockiert Client nach 6 Anfragen weitere Anfragen, was die Leistung abnimmt, die möglicherweise in der SPDY -Verbindung gewonnen werden. Für Clients, die diese Werte optimieren können (z. B. network.http.max-connections-per-server in Firefox), kann die Erhöhung der Leistung die Leistung verbessern.
Mit --client -Option funktioniert sie als Reverse-Proxy und erwartet, dass das Backend SPDY-fähige Webserver ist:
Client <-(http)-> shrpx <-(spdy)-> Webserver
[Reverse Proxy]
Für die Betriebsmodi, die mit dem Backend in SPDY sprechen, können die Backend -Verbindungen durch einen HTTP -Proxy abgestimmt werden. Der Proxy wird mit der Option --backend-http-proxy-uri angegeben. Die folgende Abbildung zeigt das Beispiel der Option --spdy-bridge und --backend-http-proxy-uri um mit dem Außen-SPDY-Proxy über HTTP-Proxy zu sprechen:
Client <-(spdy, https)-> shrpx <-(spdy)-
[Spdy Bridge]
-=================== ---> SPDY Proxy
(HTTP -Proxy -Tunnel) (z. B. SHRPX -S)
Das Beispielverzeichnis enthält eine einfache SPDY -Client -Implementierung in C.
Die Bibliothek wird mit Python Wrapper python-spdylay geliefert. Siehe python -Verzeichnis.