Это экспериментальная реализация протокола Google SPDY в C.
Эта библиотека предоставляет реализацию каркаса SPDY 2, 3 и 3.1. Он не выполняет никаких операций ввода -вывода. Когда библиотека нуждается в них, она вызывает функции обратного вызова, предоставленные приложением. Он также не включает в себя какой -либо механизм опроса событий, поэтому приложение может свободно выбирать способ обработки событий. Этот код библиотеки не зависит от какой -либо конкретной библиотеки SSL (за исключением, например, программ, которые зависят от OpenSSL 1.0.1 или более поздней версии).
Этот проект также разрабатывает клиент, сервер и прокси -сервер SPDY в верхней части библиотеки Spdylay. Смотрите раздел программ клиентов и серверов SPDY.
Большая часть функциональности SPDY/2, SPDY/3 и SPDY/3.1 была реализована. В обеих версиях прямая поддержка сервера еще не была доступна. Приложение может достичь сервера, используя примитивные API.
Как описано ниже, мы можем создать клиент и сервер SPDY с текущим API SPDYLAY.
Для построения библиотеки необходимы следующие пакеты:
Для создания и запуска программ модульных испытаний необходимы следующие пакеты:
Чтобы создать и запустить примеры программ, необходимы следующие пакеты:
Чтобы включить опцию -a (получение связанных активов из загруженного ресурса) в spdycat (одна из примеров программы), необходимы следующие пакеты:
Чтобы построить SPDY/HTTPS в HTTP Reverse Proxy shrpx (один из примеров программы), необходимы следующие пакеты:
Если вы используете Ubuntu 12.04, вам нужны установленные следующие пакеты:
$ apt-get установить AutoConf Automake Autotools-Dev Libtool Pkg-Config Zlib1g-Dev libcunit1-dev libssl-dev libxml2-dev libevent-dev
Строительство из GIT легко, но, пожалуйста, убедитесь, что по крайней мере AutoConf 2.68 используется:
$ AutoreConf -i $ Automake $ AutoConf $ ./configure $ make
Чтобы создать документацию, запустите:
$ сделать HTML
Документы будут генерироваться в соответствии с doc/manual/html/ .
Сгенерированные документы не будут установлены с помощью make install .
В этом разделе мы кратко опишем, как создать бинар Android, используя кросс-компилятор Android NDK на Debian Linux.
Мы предлагаем сценарии android-config и android-make , чтобы упростить сборку. Чтобы сделать эти сценарии, NDK Toolchain должен быть установлен следующим образом. Во -первых, позвольте представить переменную среды ANDROID_HOME . Нам нужно установить Toolchain под $ANDROID_HOME/toolchain . Пользователь может свободно выбрать путь для ANDROID_HOME . Например, для установки Toolchain под $ANDROID_HOME/toolchain сделайте это в каталоге, где NDK распаковывается:
$ Build/Tools/Make Standalone-toolchain.sh-platform = android-9-install-dir = $ android_home/toolchain
Уровень платформы здесь не важен, потому что мы не используем API API C/C ++ C/C ++.
Зависимые библиотеки, такие как OpenSSL и LibeVent, должны быть построены с помощью инструментального оборудования и установлены под $ANDROID_HOME/usr/local . Мы рекомендуем создать эти библиотеки в качестве статической библиотеки, чтобы облегчить развертывание. Поддержка LIBXML2 в настоящее время отключена.
Мы используем Zlib, который поставляется с Android NDK, поэтому нам не нужно строить его сами.
Перед запуском android-config и android-make переменная среды ANDOIRD_HOME должна быть установлена на правильный путь.
После android-config запустите android-make для компиляции источников. android-make просто включает в себя Path to Cross Compiler в PATH и Run Make. Так что, если вы включите Path to Corss Compiler самостоятельно, вы можете просто запустить создание для создания Spdylay и инструментов, как обычно.
Общественное ссылка API доступна в Интернете. Посетите http://tatsuhiro-t.github.io/spdylay/. Все публичные API находятся в Spdylay/Spdylay.h . Все публичные функции API, а также функция обратного вызова, типы, документированы.
Справочник SRC содержит реализации клиента и сервера SPDY с использованием библиотеки SPDYLAY. Эти программы предназначены для того, чтобы убедиться, что SPDYLAY API является актуально полезным для реальной реализации, а также для целей отладки. Обратите внимание, что для создания и запуска этих программ требуется поддержка NPN. На момент написания этой статьи OpenSSL 1.0.1 поддерживает NPN.
Клиент SPDY называется spdycat . Это мертвый простой загрузчик, как Wget/curl. Он подключается к Spdy Server и получает ресурсы, приведенные в командной строке:
$ src/spdycat -h
Использование: SPDYCAT [-OANSV23] [-T <секунд>] [-W <window_bits>] [-cert = <cert>]
[--cke = <key>] [-no-tls] [-d <file>] [-m <n>] [-p <proxy_host>]]
[-P <proxy_port>] <Uri> ...
ПАРАМЕТРЫ:
-v, -verbose print information, такая как прием/
Передача кадров и пар/значения.
-n,-null-out discard загруженные данные.
-О,-remote-name Сохранить данные загрузки в текущем каталоге.
Имя файла оборвано от URI. Если ури
заканчивается '/', 'index.html' используется как
имя файла. Еще не реализован.
-2, -spdy2 только используйте spdy/2.
-3, -spdy3 Используйте Spdy/3.
-SPDY3-1 только используйте SPDY/3.1.
-t, -timeout = <n> тайм -аут каждого запроса через <n> секунд.
-w, --dindow-bits = <n>
Устанавливает начальный размер окна на 2 ** <n>.
-a,-Get-Assets Скачать активы, такие как таблицы стилей, изображения
и файлы сценария, связанные с загруженным
ресурс. Только ссылки, происхождение которых
То же самое с ресурсом связывания будет
загружен.
-s, -Стат Статистика печати.
-H, -заголовок добавить заголовок к запросам.
-cert = <cert> Используйте указанный файл сертификата клиента.
Файл должен быть в формате PEM.
--КОВАЯ = <ключ> Используйте файл закрытого ключа клиента. Файл
Должен быть в формате PEM.
----те-TLS отключите SSL/TLS. Используйте -2, -3 или - -spdy3-1
Укажите версию протокола SPDY для использования.
-d, -data = <File> post file на сервер. Если - дано, данные
будет прочитан от Stdin.
-m, - -multiply = <n> Запросить каждый URI <n> раз. По умолчанию, то же самое
URI не запрашивается дважды. Этот вариант
Отключает это тоже.
-p, -proxy = <Хост> Используйте этот хост как прокси -сервер Spdy
-P, -proxy-port = <порт>
Используйте это как порт прокси -сервера Spdy, если
один установлен
-Цветная сила
$ src/spdycat -nv https://www.google.com/
[0.021] NPN Выберите «Следующий протокол: удаленный сервер» предлагает:
* spdy/4a4
* spdy/3.1
* spdy/3
* http/1.1
NPN выбрал протокол: spdy/3.1
[0,029] Полное рукопожатие
[0,029] Настройки Recv Frame <версия = 3, флаги = 0, длина = 20>
(niv = 2)
[4 (1): 100]
[7 (0): 1048576]
[0.029] recv window_update Frame <версия = 3, флаги = 0, длина = 8>
(Stream_id = 0, delta_window_size = 983040)
[0,029] Отправить SYN_STREAM FRAME <версию = 3, флаги = 1, длина = 221>
(Stream_id = 1, Assoc_stream_id = 0, PRI = 3)
: Host: www.google.com
: Метод: получить
:путь: /
: Схема: https
: Версия: http/1.1
принимать: */*
Принять по кодировке: gzip, дефту
Пользовательский агент: SPDYLAY/1.2.0-DEV
[0,080] Recv syn_reply Frame <версия = 3, флаги = 0, длина = 619>
(Stream_id = 1)
: Статус: 302 найдено
: Версия: http/1.1
Альтернативный протокол: 443: Quic
Контроль кеша: частное
Длина контента: 262
контент-тип: текст/html; charset = utf-8
Дата: Вторник, 19 ноября 2013 г. 13:47:18
Местоположение: https://www.google.co.jp/
Сервер: GWS
x-frame-options: someorigin
X-XSS-защита: 1; mode = block
[0,080] кадр данных Recv (stream_id = 1, flags = 1, длина = 262)
[0.080] Отправить рамки CONGAWEY <версию = 3, флаги = 0, длина = 8>
(last_good_stream_id = 0)
SPDY Server называется spdyd и обслуживает статические файлы. Это однопоточные и мультиплексы подключения с использованием неблокирующего розетки. Статические файлы читаются с использованием блокируя системный вызов ввода -вывода, read(2) . Он говорит Spdy/2 и Spdy/3:
$ src/spdyd -htdocs =/your/htdocs/-v 3000 server.cke server.crt
IPv4: Слушайте на порту 3000
IPv6: Слушайте на порту 3000
Согласованный следующий протокол: spdy/3.1
[id = 1] [1.296] Отправить настройки Frame <версия = 3, флаги = 0, длина = 12>
(niv = 1)
[4 (0): 100]
[id = 1] [1.297] recv syn_stream frame <version = 3, flags = 1, длина = 228>
(Stream_id = 1, Assoc_stream_id = 0, PRI = 3)
: Host: Localhost: 3000
: Метод: получить
: path: /readme
: Схема: https
: Версия: http/1.1
принимать: */*
Принять по кодировке: gzip, дефту
Пользовательский агент: SPDYLAY/1.2.0-DEV
[id = 1] [1.297] Отправить syn_reply frame <версию = 3, флаги = 0, длина = 116>
(Stream_id = 1)
: Статус: 200 ОК
: Версия: http/1.1
Контроль кэша: максимальный возраст = 3600
Длина контента: 66
Дата: Вторник, 19 ноября 2013 г. 14:35:24
Последние модифицированные: Вторник, 17 января 2012 г. 15:39:01 GMT
Сервер: spdyd spdylay/1.2.0-dev
[id = 1] [1.297] Отправить кадр данных (Stream_id = 1, flags = 0, длина = 66)
[id = 1] [1.297] Отправить кадр данных (Stream_id = 1, flags = 1, длина = 0)
[id = 1] [1.297] Stream_id = 1 закрыто
[id = 1] [1.297] RECV COAWAUALY FRAME <версия = 3, флаги = 0, длина = 8>
(last_good_stream_id = 0)
[id = 1] [1.297] закрыто
В настоящее время spdyd нуждается epoll или kqueue .
Для пользователей SHRPX, которые используют SHRPX в качестве прокси SPDY: пожалуйста, рассмотрите возможность перехода на NGHTTPX, разработанный в проекте NGHTTP2. NGHTTPX также поддерживает SPDY Proxy.
shrpx -это многопоточный обратный прокси для SPDY/HTTPS. Он преобразует трафик SPDY/HTTPS в простой http. Первоначально он разработан как обратный прокси, но теперь у него есть другие режимы работы, такие как прокси -прокси -сервер. Например, с опцией --spdy-proxy ( -s в стенографии) его можно использовать в качестве безопасного прокси -сервера Spdy с прокси (например, Squid) в бэкэнд. С опцией --cliet-proxy ( -p ) он действует как порядковый форвардный прокси, но ожидает безопасного прокси -сервера Spdy в бэкэнде. Таким образом, он становится адаптером для обеспечения прокси -сервера SPDY для клиентов, который не поддерживает Secure Spdy Proxy. Другим заметным режимом работы является --spdy-relay , который просто передает трафик SPDY/HTTPS на бэкэнд в SPDY. В следующей таблице приведены режимы работы.
| Опция режима | Внешний интерфейс | Бэкэнд | Примечание |
|---|---|---|---|
| по умолчанию | Spdy/https | Http | Обратный прокси |
--spdy | Spdy/https | Http | Spdy Proxy |
--spdy-relay | Spdy/https | Spdy | |
--client | Http | Spdy | |
--client-proxy | Http | Spdy | Вперед прокси |
shrpx поддерживает файл конфигурации. --conf shrpx.conf.sample
Мы кратко опишем архитектуру shrpx здесь. У него есть выделенный поток, который слушает на гнездах сервера. Когда он принял входящее соединение, оно передает дескриптор файла входящего соединения в одну из поток работника. Каждый рабочий поток имеет свой собственный цикл событий и может обрабатывать множество соединений, используя не блокирующий ввод-вывод. Количество потока работника может быть указано с помощью параметра командной строки. Libevent используется для обработки низкоуровневого ввода-вывода.
Вот параметры командной строки:
$ src/shrpx -h
Использование: shrpx [-dh] [-s |--client | -p] [-b <host, port>]
[-f <host, port>] [-n <cores>] [-c <Num>] [-l <Level>]
[Параметры ...] [<private_key> <cert>]
Обратный прокси для SPDY/HTTPS.
Позиционные аргументы:
<private_key> установите путь к закрытому ключу сервера. Необходимый
Если не указано ни -P, ни - -клиент.
<cert> Установите путь к сертификату сервера. Необходимый
Если не указано ни -P, ни - -клиент.
ПАРАМЕТРЫ:
Соединения:
-b, -backend = <host, port>
Установите бэкэнд -хост и порт.
По умолчанию: '127.0.0.1,80'
-f, -frontend = <host, port>
Установите хост и порт.
По умолчанию: '0,0,0,0,3000'
-backlog = <Num> установить размер задержки.
По умолчанию: 256
-Backend-IPv4 Resolve Backend HostName к адресу IPv4
только.
-Backend-IPv6 Resolve Backend HostName к адресу IPv6
только.
Производительность:
-n, - -workers = <doures>
Установите количество рабочих потоков.
По умолчанию: 1
-read-rate = <spect> Установите максимальную среднюю скорость чтения на фронта
связь. Настройка 0 для этой опции означает
Скорость чтения не ограничена.
По умолчанию: 1048576
-read-burst = <размер>
Установите максимальный размер чтения на Frontend
связь. Настройка 0 для этой опции означает
Читать размер взрыва неограничен.
По умолчанию: 4194304
-WRITE-RATE = <STOP>
Установить максимальную среднюю скорость записи на фронта
связь. Настройка 0 для этой опции означает
Скорость записи не ограничена.
По умолчанию: 0
-Write-burst = <размер>
Установите максимальный размер взрыва записи на Frontend
связь. Настройка 0 для этой опции означает
Размер писать размер взрыва не ограничен.
По умолчанию: 0
Тайм -аут:
-Фондент-Spdy-Timeout = <ec>
Укажите тайм -аут для чтения для Spdy Frontend
связь. По умолчанию: 180
-Фондент-Читать Timeout = <ec>
Укажите тайм-аут для чтения для не-Spdy Frontend
связь. По умолчанию: 180
-Фондент-записать время-timeout = <ec>
Укажите тайм -аут записи как для Spdy, так и для
Не-Spdy Frontends.
связь. По умолчанию: 60
-Backend-Timeout = <ec>
Укажите тайм -аут для чтения для Backend Connection.
По умолчанию: 900
-Backend-write-timeout = <ec>
Укажите тайм -аут записи для бэкэнда
связь. По умолчанию: 60
-backend-hake-alive-timeout = <ec>
Укажите тайм-аут для бэкэнд
связь. По умолчанию: 60
-backend-http-proxy-uri = <uri>
Укажите прокси -URI в форме
http: // [<user>: <Ass>@] <Proxy>: <порт>. Если
Прокси требует аутентификации, укажите
<User> и <pass>. Обратите внимание, что они должны быть
правильно кодируется. Этот прокси используется
Когда бэкэнд -соединение - Spdy. Первый,
сделать запрос на подключение к прокси и
он соединяется с бэкэнд от имени
shrpx. Это формирует туннель. После этого Shrpx
выполняет рукопожатие SSL/TLS с
вниз по течению через туннель. Тайм -ауты
При подключении и выполнении запроса на подключение
может быть указан-Backend-Timeout
и-Backend-write-timeout.
SSL/TLS:
-ciphers = <Suite> Установить разрешенный список шифров. Формат
Строка описана в OpenSSL Ciphers (1).
Если используется эта опция,-Honor-Cipher Order
неявно включена.
-Гонор-косой заказ
Порядок шифрового заказа по чести, давая
Способность смягчить атаки зверя.
-k, -Несмотря на использование с -p или - -client, не проверяйте
Сертификат бэкэнд -сервера.
-cacert = <that> при использовании с -p или - -client, установите путь к
Доверенный файл сертификата CA.
Файл должен быть в формате PEM. Он может
содержать несколько сертификатов. Если
Связанный OpenSSL настроен на систему загрузки
широкие сертификаты, они загружены
в стартапе независимо от этого варианта.
-Повдоно-ключ-passwd-file = <filepath>
Путь к файлу, который содержит пароль для
Частный ключ сервера. Если ни один не дан и
Частный ключ защищен паролем, он будет
просить интерактивно.
-SUBCERT = <KeyPath>: <CERTPATH>
Укажите дополнительный сертификат и частное
ключевой файл. SHRPX выберет сертификаты
на основе имени хоста, указанного клиентом
Используя расширение TLS SNI. Эта опция может быть
использовал несколько раз.
-Backend-tls-sni-field = <shost>
Явно установите содержание TLS SNI
расширение. Это по умолчанию в бэкэнд
Имя хоста.
-DH-Param-file = <Путь>
Путь к файлу, который содержит параметры DH в
Формат PEM. Без этой опции, Dhe Cipher
люксы недоступны.
-Verify-client Требовать и проверить сертификат клиента.
-Verify-client-cacert = <thpate>
Путь к файлу, который содержит сертификаты CA
Чтобы проверить сертификат клиента.
Файл должен быть в формате PEM. Он может
содержать несколько сертификатов.
--клиент-private-key-file = <thpate>
Путь к файлу, который содержит частные клиента
Ключ, используемый в бэкэнд -аутентификации клиента.
--client-cert-file = <path>
Путь к файлу, который содержит клиент
Сертификат, используемый в бэкэнд -клиенте
аутентификация.
-tls-proto-list = <sist>
Список протокола SSL/TLS с запятой
быть включенным.
Доступны следующие протоколы:
TLSV1.2, TLSV1.1, TLSV1.0, SSLV3
Сопоставление имен выполняется в случае нечувствительного.
манера
Параметр должен быть разграничен одним
Только запята и любые белые помещения обрабатываются
как часть строки протокола.
По умолчанию: TLSV1.2, TLSV1.1, TLSV1.0
Spdy:
-c,-spdy-max-concurrent-streams = <Num>
Установите максимальное количество одновременного
потоки в одном сеансе SPDY.
По умолчанию: 100
-Фондент-Spdy-Window-bits = <n>
Устанавливает начальный размер окна
Spdy Frontend Connection с 2 ** <n>.
По умолчанию: 16
-Фондент-Spdy-Connection-Window-bits = <n>
Устанавливает размер окна для подключения SPDY
Подключение к фронте с 2 ** <n>.
По умолчанию: 16
-Фондент-Spdy-no-tls
Отключить SSL/TLS на Frontend Spdy
соединения. Протокол SPDY должен быть указан
Использование-Фондент-Spdy-Proto. Этот вариант
Также отключает фронт http/1.1.
-Фондент-Spdy-Proto
Укажите протокол SPDY, используемый на Frontend
соединение, если-Frontend-spdy-no-tls
использовал. По умолчанию: SPDY/3.1
-Backend-spdy-Window-bits = <n>
Устанавливает начальный размер окна
Spdy Backend Connection с 2 ** <n>.
По умолчанию: 16
-Backend-Spdy-Connection-Window-bits = <n>
Устанавливает размер окна для подключения SPDY
Бэкэнд соединение с 2 ** <n>.
По умолчанию: 16
-Backend-spdy-no-tls
Отключить SSL/TLS на бэкэнд -соединениях SPDY.
Протокол SPDY должен быть указан с использованием
-Backend-Spdy-Proto
-Backend-Spdy-Proto
Укажите протокол SPDY, используемый в Backend
Подключение, если-Backend-Spdy-no-TLS используется.
По умолчанию: SPDY/3.1
Режим:
-s,-spdy-proxy Включить безопасное прокси-режим Spdy.
-Spdy-Bridge общается с бэкэнд в Spdy. Таким образом
входящие соединения SPDY/HTTPS
преобразовано в соединение Spdy и передано в
Бэкэнд. См.-Backend-Http-Proxy-Uri
вариант, если вы за прокси и хотите
Чтобы подключиться к внешнему прокси -серверу Spdy.
--клиент вместо принятия соединения SPDY/HTTPS,
принять HTTP -соединение и общаться с
Бэкэнд -сервер в SPDY. Использовать SHRPX как
Вместо этого прокси -сервер, используйте опцию -p.
-p,-client-proxy like-client опция, но это также требует
Путь запроса от Frontend должен быть
абсолютный URI, подходящий для использования в качестве
Вперед прокси.
Регистрация:
-L,--log-level = <уровни>
Установите уровень серьезности вывода журнала.
Информация, предупреждение, ошибка и фатальный.
По умолчанию: предупреждение
-accesslog print simple accesslog к Stderr.
-Сисслог Отправить сообщения журнала в системный журнал.
-Сислог-Фактивность = <учреждение>
Установите системное журнал.
По умолчанию: Демон
Разное:
-ADD-X-Forwarded-For
Добавить поля заголовка x-forwarded-для
вниз по течению запрос.
-Нет, не добавляйте, чтобы через поле заголовка. Если через
Заголовок получено, осталось
неизменен.
-Д, -Демон Беги на фоне. Если -d используется,
Текущий рабочий каталог изменен на '/'.
-PID-FILE = <THAP> Установите путь, чтобы сохранить PID этой программы.
-user = <user> Запустите эту программу как пользователь. Этот вариант
предназначен для использования для отброса корневых привилегий.
-conf = <Thap> нагрузить конфигурацию с пути.
По умолчанию: /etc/shrpx/shrpx.conf
-v, -версия печати и выход.
-h, -Печать печать этой помощи и выйти.
Для тех из вас, кто любопытен, shrpx является аббревиатурой «SPDY/HTTPS для HTTP -обратного прокси».
Без каких -либо вариантов -s , --spdy-bridge , -p и --client shrpx работает как обратный прокси на сервер бэкэнд:
Клиент <-(spdy, https)-> shrpx <-(http)-> веб-сервер
[обратный прокси]
С опцией -s , он работает как Secure Spdy Proxy:
Клиент <-(spdy, https)-> shrpx <-(http)-> Прокси
[Spdy Proxy] (например, кальмар)
Client в вышеперечисленном необходимо настроить для использования SHRPX в качестве безопасного прокси -сервера SPDY.
На момент написания этой статьи Chrome является единственным браузером, который поддерживает безопасную прокси -сервер SPDY. Одним из способов настройки Chrome для использования Secure Spdy Proxy является создание скрипта Proxy.pac, как это:
функция findproxyforurl (url, host) {
вернуть "https serveraddr: порт";
}
SERVERADDR и PORT - это имя хоста/адрес и порт машины, который работает SHRPX. Обратите внимание, что Chrome требует действительного сертификата для безопасного прокси SPDY.
Затем запустите Chrome со следующими аргументами:
$ google-chrome --proxy-pac-url = file: //path/to/proxy.pac-use-npn
Примечание
На момент написания этой статьи Chrome 24 ограничивает максимальные параллельные соединения с прокси -сервером до 32. И из -за ограничения обработки бассейна гнездо в хроме он быстро заполняется, если используется Spdy Proxy и создается многие сеансы SPDY. Если он достигает предела, новые соединения просто заблокированы до тех пор, пока существующие соединения не будут истешены. (См. Chrome выпуск 92244). Обходной путь делает высокое количество максимальных соединений, скажем, 99, что является самым высоким. Для этого вам нужно изменить так называемую настройку политики. См. Шаблоны политики для подробностей, как изменить настройку политики на платформе, которую вы используете. Например, имя политики, которое мы ищем, является MaxConnectionsPerproxy, например, если вы используете Linux, следуйте инструкции, описанной в Linux Quick Start и Create /etc/opt/chrome/policies/managed/test_policy.json файл со следующим контентом и перезагрузкой Chrome:
{
«MaxConnectionsperproxy»: 99
}
С --spdy-bridge он принимает соединения SPDY/HTTPS и общается с Backend в Spdy:
Клиент <-(spdy, https)-> shrpx <-(spdy)-> прокси-сервер в Интернете или Spdy и т. Д.
[Spdy Bridge] (например, shrpx -s)
С опцией -p он работает как вперед прокси и ожидает, что бэкэнд безопасен Spdy Proxy:
Клиент <-(http)-> shrpx <-(spdy)-> Secure Spdy Proxy
[Вперед прокси] (например, shrpx -s или узло -spdyproxy)
Client должен быть настроен на использование SHRPX в качестве прямого прокси.
В этой конфигурации клиенты, которые не поддерживают Secure Spdy Proxy, могут использовать Secure Spdy Proxy через shrpx . Поместив shrpx в той же коробке или в той же сети с клиентами, эта конфигурация может принести преимущества Secure Spdy Proxy для этих клиентов. Поскольку максимальное количество подключений на сервер все еще применяется в прокси -подключении, усиление производительности не очевидно. Например, если максимальное количество подключений на сервер составляет 6, после отправки 6 запросов на прокси, клиентские блокируют дальнейшие запросы, что убивает производительность, которая может быть получена в подключении SPDY. Для клиентов, которые могут настроить эти значения (например, network.http.max-connections-per-server в Firefox), их увеличение может улучшить производительность.
С опцией --client он работает как обратный прокси и ожидает, что бэкэнд является веб-сервером с поддержкой SPDY:
Клиент <-(http)-> shrpx <-(spdy)-> Веб-сервер
[обратный прокси]
Для режимов работы, которые разговаривают с бэкэнд в SPDY, подключения к бэкэнд могут быть туннелированы, хотя HTTP -прокси. Прокси указан с использованием опции --backend-http-proxy-uri . Следующий рисунок иллюстрирует пример опции --spdy-bridge и --backend-http-proxy-uri чтобы поговорить с внешним прокси-сервером SPDY через HTTP-прокси:
Клиент <-(spdy, https)-> shrpx <-(spdy)-
[Spdy Bridge]
-================== ---> Spdy Proxy
(HTTP -прокси -туннель) (например, SHRPX -S)
Справочник примеров содержит простую реализацию клиента SPDY в C.
Библиотека поставляется с Python Prypper python-spdylay . См. Справочник python .