هذا تطبيق تجريبي لبروتوكول Google SPDY في C.
توفر هذه المكتبة SPDY الإصدار 2 و 3 و 3.1 تنفيذ طبقة تأطير. لا يؤدي أي عمليات I/O. عندما تحتاجها المكتبة ، فإنها تستدعي وظائف رد الاتصال المقدمة من التطبيق. كما أنه لا يشمل أي آلية لاستطلاع الأحداث ، بحيث يمكن للتطبيق اختيار طريقة التعامل مع الأحداث بحرية. لا يعتمد رمز المكتبة هذا على أي مكتبة SSL معينة (باستثناء البرامج التي تعتمد على OpenSSL 1.0.1 أو أحدث).
يقوم هذا المشروع أيضًا بتطوير عميل SPDY والخادم والوكالة أعلى مكتبة Spdylay. انظر قسم برامج العميل والخادم SPDY.
تم تنفيذ معظم وظائف spdy/2 و spdy/3 و spdy/3.1. في كلا الإصدارين ، لم يكن الدعم المباشر لـ Server-Push متاحًا بعد. يمكن للتطبيق تحقيقف خادم باستخدام واجهات برمجة التطبيقات البدائية.
كما هو موضح أدناه ، يمكننا إنشاء عميل وخادم spdy مع API spdylay الحالي.
هناك حاجة إلى الحزم التالية لبناء المكتبة:
لبناء وتشغيل برامج اختبار الوحدة ، هناك حاجة إلى الحزم التالية:
لإنشاء وتشغيل البرامج المثال ، هناك حاجة إلى الحزم التالية:
لتمكين -a (الحصول على أصول مرتبطة من المورد الذي تم تنزيله) في spdycat (أحد مثال برنامج) ، هناك حاجة إلى الحزم التالية:
لإنشاء SPDY/HTTPS إلى HTTP Proxy Proxy shrpx (أحد مثال برنامج) ، هناك حاجة إلى الحزم التالية:
إذا كنت تستخدم Ubuntu 12.04 ، فأنت تحتاج إلى تثبيت الحزم التالية:
$ apt-get تثبيت autoconf autotools-dev libtool pkg-config zlib1g-dev libcunit1-dev libssl-dev libxml2-dev libevent
يعد البناء من Git سهلًا ، ولكن يرجى التأكد من استخدام AutoConf 2.68 على الأقل:
$ autoreconf -i $ Automake $ autoconf $ ./configure جعل $
لبناء الوثائق ، تشغيل:
$ جعل html
سيتم إنشاء المستندات تحت doc/manual/html/ .
لن يتم تثبيت المستندات التي تم إنشاؤها مع make install .
في هذا القسم ، نصف بإيجاز كيفية إنشاء Android Binary باستخدام Android NDK Cross-Compiler على Debian Linux.
نحن نقدم نصوص android-config و android-make لتسهيل البناء. لجعل هذه البرامج النصية تعمل ، يجب تثبيت NDK Toolchain بالطريقة التالية. أولاً ، دعنا نقدم متغير البيئة ANDROID_HOME . نحتاج إلى تثبيت أدوات تحت $ANDROID_HOME/toolchain . يمكن للمستخدم اختيار مسار ANDROID_HOME بحرية. على سبيل المثال ، لتثبيت أدوات أدوات تحت $ANDROID_HOME/toolchain ، قم بذلك في الدليل حيث يتم تفريغ NDK:
$ build/tools/make-standalone-toolchain.sh-platform = Android-9-install-dir = $ Android_Home/Charchain
مستوى النظام الأساسي ليس مهمًا هنا لأننا لا نستخدم API C/C ++ محددة Android.
يجب بناء المكتبات التابعة ، مثل OpenSSL و Libevent باستخدام أدوات الأدوات وتثبيتها بموجب $ANDROID_HOME/usr/local . نوصي ببناء هذه المكتبات كمكتبة ثابتة لجعل النشر أسهل. دعم libxml2 هو معطل حاليا.
نحن نستخدم Zlib الذي يأتي مع Android NDK ، لذلك لا يتعين علينا أن نبنيه بأنفسنا.
قبل تشغيل android-config و android-make ، يجب ضبط متغير البيئة ANDOIRD_HOME على الإشارة إلى المسار الصحيح.
بعد android-config ، قم بتشغيل android-make لتجميع المصادر. يتضمن android-make مجرد مسار إلى برنامج التحويل البرمجي المتقاطع في PATH وجعل التشغيل. لذلك إذا قمت بتضمين Path to Corss Compiler بنفسك ، فيمكنك فقط تشغيل Make لإنشاء Spdylay والأدوات كالمعتاد.
مرجع API العام متاح على الإنترنت. تفضل بزيارة http://tatsuhiro-t.github.io/spdylay/. جميع واجهات برمجة التطبيقات العامة في spdylay/spdylay.h . يتم توثيق جميع وظائف واجهة برمجة التطبيقات العامة وكذلك وظيفة رد الاتصال typedefs.
يحتوي دليل SRC على تطبيقات العميل والخادم Spdy باستخدام مكتبة Spdylay. تهدف هذه البرامج إلى التأكد من أن API SPDYLAY يمكن استخدامها بشكل حسي للتنفيذ الحقيقي وأيضًا لأغراض التصحيح. يرجى ملاحظة أن OpenSSL مع دعم NPN مطلوب من أجل إنشاء وتشغيل هذه البرامج. في وقت كتابة هذا التقرير ، يدعم OpenSSL 1.0.1 NPN.
يسمى العميل spdy spdycat . إنه تنزيل بسيط بسيط مثل WGET/Curl. يتصل بخادم spdy ويحصل على الموارد الواردة في سطر الأوامر:
$ src/spdycat -h
الاستخدام: spdycat [-oansv23] [-t <seconds>] [-w <window_bits>] [--Lert = <vert>]
[-key = <key>] [--no-tls] [-d <iple>] [-M <n>] [-p <proxy_host>]
[-P <Perxy_port>] <Uri> ...
خيارات:
-v ، -معلومات تصحيح تصحيح الطباعة مثل الاستقبال/
نقل الإطارات وأزواج الاسم/القيمة.
-N ،-لا شيء يتجاهل البيانات التي تم تنزيلها.
-O ،-remote-name حفظ بيانات التنزيل في الدليل الحالي.
اسم الملف هو ديري من URI. إذا uri
يتم استخدام "/" ، "index.html" كملف
اسم الملف. لم ينفذ بعد.
-2 ، -spdy2 فقط استخدم spdy/2.
-3 ، -spdy3 فقط استخدم spdy/3.
-Spdy3-1 استخدم فقط spdy/3.1.
-T ، -Timout = <n> مهلة كل طلب بعد <n> ثانية.
-w ،-window-bits = <n>
يعين حجم النافذة الأولية إلى 2 ** <N>.
-A ،-قم بتنزيل الأصول مثل أوراق الأنماط والصور
وملفات البرنامج النصي المرتبطة من التنزيل
الموارد. فقط الروابط التي أصولها هي
نفس الشيء مع المورد الرابط سيكون
تم تنزيله.
-S ، -إحصاءات الطباعة.
-H ، -قم بإضافة رأس إلى الطلبات.
--CERT = <VERT> استخدم ملف شهادة العميل المحدد.
يجب أن يكون الملف بتنسيق PEM.
-key = <key> استخدم ملف المفتاح الخاص للعميل. الملف
يجب أن يكون بتنسيق PEM.
-لا TLS تعطيل SSL/TLS. استخدم -2 ، -3 أو -spdy3-1
حدد إصدار بروتوكول SPDY للاستخدام.
-d ، -data = <file> post file to server. إذا - تم إعطاء البيانات ، البيانات
سيتم قراءة من stdin.
-M ، -multiply = <n> اطلب كل uri <n> مرات. بشكل افتراضي ، نفس الشيء
لا يطلب URI مرتين. هذا الخيار
تعطيلها أيضًا.
-P ، -proxy = <sost> استخدم هذا المضيف كبديل موسع
-P ،-proxy-port = <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 <الإصدار = 3 ، أعلام = 0 ، طول = 20>
(NIV = 2)
[4 (1): 100]
[7 (0): 1048576]
[0.029] RECV window_update إطار <الإصدار = 3 ، الأعلام = 0 ، طول = 8>
(Stream_id = 0 ، delta_window_size = 983040)
[0.029] أرسل إطار Syn_stream <الإصدار = 3 ، أعلام = 1 ، الطول = 221>
(Stream_id = 1 ، Assoc_stream_id = 0 ، pri = 3)
: المضيف: 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: sameorigin
X-XSS-حماية: 1 ؛ الوضع = كتلة
[0.080] إطار بيانات RECV (Stream_id = 1 ، أعلام = 1 ، الطول = 262)
[0.080] أرسل إطار GOAWAY <الإصدار = 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.key server.crt
IPv4: استمع على المنفذ 3000
IPv6: استمع على المنفذ 3000
البروتوكول التالي المتفاوض عليه: spdy/3.1
[ID = 1] [1.296] إرسال إطار الإعدادات <الإصدار = 3 ، الأعلام = 0 ، الطول = 12>
(NIV = 1)
[4 (0): 100]
[معرف = 1] [1.297] إطار RECV Syn_stream <الإصدار = 3 ، الأعلام = 1 ، الطول = 228>
(Stream_id = 1 ، Assoc_stream_id = 0 ، pri = 3)
: المضيف: LocalHost: 3000
: الطريقة: الحصول على
: المسار: /readme
: مخطط: https
: الإصدار: http/1.1
يقبل: */*
قبول الترميز: gzip ، انحراف
عامل المستخدم: Spdylay/1.2.0-Dev
[ID = 1] [1.297] أرسل إطار SYN_REPLY <الإصدار = 3 ، الأعلام = 0 ، الطول = 116>
(Stream_id = 1)
: الحالة: 200 موافق
: الإصدار: http/1.1
السيطرة على ذاكرة التخزين المؤقت: الحد الأقصى في سن = 3600
طول المحتوى: 66
التاريخ: الثلاثاء ، 19 نوفمبر 2013 14:35:24 بتوقيت جرينتش
المعدل الأخير: الثلاثاء ، 17 يناير 2012 15:39:01 بتوقيت جرينتش
الخادم: spdyd spdylay/1.2.0-dev
[ID = 1] [1.297] أرسل إطار البيانات (Stream_id = 1 ، أعلام = 0 ، الطول = 66)
[معرف = 1] [1.297] أرسل إطار البيانات (Stream_id = 1 ، أعلام = 1 ، الطول = 0)
[ID = 1] [1.297] Stream_id = 1 مغلق
[معرف = 1] [1.297] إطار RECV GOAWAY <الإصدار = 3 ، الأعلام = 0 ، طول = 8>
(last_good_stream_id = 0)
[معرف = 1] [1.297] مغلق
حاليًا ، يحتاج spdyd epoll أو kqueue .
بالنسبة لمستخدمي SHRPX الذين يستخدمون SHRPX كوكيل spdy: يرجى النظر في الترحيل إلى NGHTTPX المطورة في مشروع NGHTTP2. NGHTTPX يدعم الوكيل spdy أيضا.
shrpx عبارة عن وكيل عكسي متعدد الخيوط لـ SPDY/HTTPS. يحول حركة مرور SPDY/HTTPS إلى HTTP عادي. تم تطويره في البداية كبديل عكسي ، ولكن لديه الآن أوضاع تشغيل أخرى مثل الوكيل الأمامي للأمام. على سبيل المثال ، مع خيار --spdy-proxy ( -s في الاختزال) ، يمكن استخدامه كبديل آمن مع وكيل (على سبيل المثال ، الحبار) في الخلفية. مع -خيار --cliet-proxy ( -p ) ، فإنه يعمل مثل وكيل Ordinaly Forward ولكنه يتوقع وكيل spdy آمن في الواجهة الخلفية. وبالتالي ، يصبح محولًا لتأمين الوكيل spdy للعملاء الذي لا يدعم الوكيل SPDY الآمن. وضع التشغيل البارز الآخر هو- --spdy-relay ، والذي ينقل فقط حركة مرور SPDY/HTTPS إلى الواجهة الخلفية في spdy. يلخص الجدول التالي أوضاع التشغيل.
| خيار الوضع | الواجهة | الخلفية | ملحوظة |
|---|---|---|---|
| تقصير | spdy/https | http | عكس الوكيل |
--spdy | spdy/https | http | بروكسي spdy |
--spdy-relay | spdy/https | Spdy | |
--client | http | Spdy | |
--client-proxy | http | Spdy | وكيل إلى الأمام |
يدعم shrpx ملف التكوين. راجع -خيار --conf وعينة ملف التكوين shrpx.conf.sample .
نحن نصف باختصار بنية shrpx هنا. يحتوي على مؤشر ترابط مخصص يستمع على مآخذ الخادم. عندما قبلت الاتصال الوارد ، فإنه يمرر واصف الملف للاتصال الوارد بواحد من مؤشر ترابط العمال. يحتوي كل مؤشر ترابط عامل على حلقة الحدث الخاصة به ويمكنه التعامل مع العديد من الاتصالات باستخدام I/O غير المحظورة. يمكن تحديد عدد مؤشر ترابط العامل باستخدام خيار سطر الأوامر. يتم استخدام libevent للتعامل مع شبكة I/O للشبكة منخفضة المستوى.
فيما يلي خيارات سطر الأوامر:
$ src/shrpx -h
الاستخدام: shrpx [-dh] [-s |-client | -p] [-b <host ، port>]
[-f <host ، port>] [-n <cores>] [-c <num>] [-l <level>]
[خيارات ...] [<virult_key> <cred>]
وكيل عكسي لـ spdy/https.
الحجج الموضعية:
<vircial_key> اضبط المسار على المفتاح الخاص للخادم. مطلوب
ما لم يتم تحديد إما -P أو -العميل.
<creat> تعيين المسار إلى شهادة الخادم. مطلوب
ما لم يتم تحديد إما -P أو -العميل.
خيارات:
الاتصالات:
-b ، -backend = <host ، port>
تعيين مضيف الخلفية والميناء.
الافتراضي: '127.0.0.1،80'
-f ، --prontend = <host ، port>
تعيين مضيف الواجهة الأمامية والميناء.
الافتراضي: '0.0.0.0،3000'
-backlog = <num> تعيين حجم تراكم الاستماع.
الافتراضي: 256
-Backend-IPV4 حل اسم المضيف الخلفي إلى عنوان IPv4
فقط.
-Backend-IPV6 حل اسم المضيف الخلفي إلى عنوان IPv6
فقط.
أداء:
-n ، -العمال = <النوى>
اضبط عدد خيوط العمال.
الافتراضي: 1
-معدل القراءة = <dat> تعيين متوسط معدل القراءة المتوسط على الواجهة الأمامية
اتصال. تعيين 0 لهذا الخيار يعني
معدل القراءة غير محدود.
الافتراضي: 1048576
-القراءة burst = <siverse>
اضبط أقصى قراءة لحجم الانفجار على الواجهة الأمامية
اتصال. تعيين 0 لهذا الخيار يعني
قراءة حجم الانفجار غير محدود.
الافتراضي: 4194304
-معدل write = <date>
حدد متوسط معدل الكتابة في الواجهة الأمامية
اتصال. تعيين 0 لهذا الخيار يعني
معدل الكتابة غير محدود.
الافتراضي: 0
-write-burst = <siverse>
اضبط الحد الأقصى لحجم الانفجار على الواجهة الأمامية
اتصال. تعيين 0 لهذا الخيار يعني
كتابة حجم الانفجار غير محدود.
الافتراضي: 0
نفذ الوقت:
--prontend-spdy-readt-timeout = <ec>
حدد مهلة قراءة الواجهة الأمامية spdy
اتصال. الافتراضي: 180
-مقدمة-قفزة الوقت = <ec>
حدد مهلة القراءة للواجهة الأمامية غير الممتدة
اتصال. الافتراضي: 180
--write-write timeout = <ec>
حدد مهلة الكتابة لكل من spdy و
الجبهة غير الموضحة.
اتصال. الافتراضي: 60
-Backend-Readt-Timeout = <ec>
حدد مهلة قراءة اتصال الخلفية.
الافتراضي: 900
-Backend-Write-timeout = <ec>
حدد مهلة كتابة الخلفية
اتصال. الافتراضي: 60
-Backend-ekening-alive-timeout = <ec>
حدد مهلة الحفاظ على الواجهة الخلفية
اتصال. الافتراضي: 60
-Backend-HTTP-Proxy-uri = <Uri>
حدد الوكيل URI في النموذج
http: // [<serve>: <pass>@] <Perxy>: <port>. لو
وكيل يتطلب المصادقة ، حدد
<Sether> و <pass>. لاحظ أنه يجب أن يكونوا
بشكل صحيح في المئة مشفرة. يستخدم هذا الوكيل
عندما يكون اتصال الواجهة الخلفية. أولاً،
تقديم طلب اتصال إلى الوكيل و
يتصل بالواجهة الخلفية نيابة عن
SHRPX. هذا يشكل النفق. بعد ذلك ، shrpx
ينفذ مصافحة SSL/TLS مع
المصب من خلال النفق. المهايات
عند التوصيل وجعل طلب الاتصال
يمكن تحديدها بواسطة-Backend-Readyout
و-Backend-Write-Timeout Options.
SSL/TLS:
-الأطراف = <ucite> SET سمحت بقائمة التشفير. شكل
تم وصف السلسلة في OpenSSL الأصفار (1).
إذا تم استخدام هذا الخيار ، فالترتيب المشفرة
تم تمكين ضمنيًا.
--هونور كوربشر
شرف أمر الشفرات ، وإعطاء ملف
القدرة على تخفيف هجمات الوحش.
-k ، -insured عند استخدامها مع -P أو -صرير ، لا تتحقق
شهادة الخادم الخلفية.
-cacert = <path> عند استخدامها مع -P أو -صرير ، قم بتعيين المسار إلى
ملف شهادة CA الموثوق.
يجب أن يكون الملف بتنسيق PEM. يمكن
تحتوي على شهادات متعددة. إذا
تم تكوين Linked OpenSSL لتحميل النظام
شهادات واسعة ، يتم تحميلها
عند بدء التشغيل بغض النظر عن هذا الخيار.
-private-key-passwd-file = <filepath>
مسار للملف الذي يحتوي على كلمة مرور ل
المفتاح الخاص للخادم. إذا لم يتم إعطاء أي منها و
المفتاح الخاص هو كلمة المرور المحمية
يطلب بشكل تفاعلي.
--subcert = <Keypath>: <certpath>
حدد شهادة إضافية وخاصة
ملف المفتاح. سيختار SHRPX الشهادات
بناءً على اسم المضيف المشار إليه من قبل العميل
باستخدام تمديد TLS SNI. يمكن أن يكون هذا الخيار
تستخدم عدة مرات.
-Backend-TLS-Sni-Field = <Sov>
قم بتعيين محتوى TLS Sni بشكل صريح
امتداد. هذا سوف افتراضي إلى الواجهة الخلفية
اسم المضيف.
---param-file = <path>
مسار للملف الذي يحتوي على معلمات DH في
تنسيق PEM. بدون هذا الخيار ، Dhe Cipher
الأجنحة غير متوفرة.
-قم بتوضيح شهادة العميل والتحقق من شهادة العميل.
-
مسار للملف الذي يحتوي على شهادات CA
للتحقق من شهادة العميل.
يجب أن يكون الملف بتنسيق PEM. يمكن
تحتوي على شهادات متعددة.
-ملف مفتاح خاص- cervense = <path>
مسار للملف الذي يحتوي على العميل الخاص
المفتاح المستخدم في مصادقة العميل الخلفية.
-منشور Cert-Cert = <Path>
مسار للملف الذي يحتوي على العميل
الشهادة المستخدمة في عميل الواجهة الخلفية
المصادقة.
-TLS-Proto-List = <list>
فاصلة القائمة المحددة لبروتوكول SSL/TLS
يتم تمكين.
البروتوكولات التالية متوفرة:
TLSV1.2 ، TLSV1.1 ، TLSV1.0 ، SSLV3
يتم مطابقة الاسم في حالة غير حساسة
طريقة.
يجب تحديد المعلمة من قبل واحد
فاصلة فقط وأي مساحات بيضاء يتم التعامل معها
كجزء من سلسلة البروتوكول.
الافتراضي: TLSV1.2 ، TLSV1.1 ، TLSV1.0
Spdy:
-C ، -Spdy-max-concurrent-reams = <num>
حدد الحد الأقصى لعدد المتزامن
تدفقات في جلسة واحدة.
الافتراضي: 100
--prontend-spdy-window-bits = <n>
يضبط حجم النافذة الأولية لكل شخص
توصيل الواجهة الأمامية إلى 2 ** <N>.
الافتراضي: 16
--prontend-spdy-connection-window-bits = <n>
يعين حجم نافذة الاتصال لكل توصيل
اتصال الواجهة إلى 2 ** <N>.
الافتراضي: 16
-قبل الوفرة-لا تلي
تعطيل SSL/TLS على مواجهة الواجهة الأمامية
الاتصالات. يجب تحديد بروتوكول spdy
باستخدام-قبل الوفرة-proto. هذا الخيار
كما يعطل الواجهة الأمامية HTTP/1.1.
-قبل أن يسبق-بروتو
حدد بروتوكول spdy المستخدمة أمام الواجهة الأمامية
الاتصال إذا-قبل الولادة لا تلي.
مستخدم. الافتراضي: spdy/3.1
-backend-spdy-window-bits = <n>
يضبط حجم النافذة الأولية لكل شخص
اتصال الخلفية spdy إلى 2 ** <N>.
الافتراضي: 16
-backend-spdy-connection-window-bits = <n>
يعين حجم نافذة الاتصال لكل توصيل
اتصال الخلفية إلى 2 ** <N>.
الافتراضي: 16
-Backend-Spdy-No-TLS
تعطيل SSL/TLS على اتصالات spdy الخلفية.
يجب تحديد بروتوكول spdy باستخدام
-Backend-Spdy-Proto
-Backend-Spdy-Proto
حدد بروتوكول Spdy المستخدم في الخلفية
الاتصال إذا-يتم استخدام backend-spdy-no-tls.
الافتراضي: spdy/3.1
وضع:
-S ، -Spdy-proxy تمكين وضع الوكيل الآمن.
-تواصل الجسر بين الجسور مع الواجهة الخلفية في Spdy. هكذا
اتصالات spdy/https الواردة
تم تحويلها إلى اتصال spdy ونقلت إلى
الواجهة الخلفية. انظر-Backend-HTTP-Proxy-uri
الخيار إذا كنت وراء الوكيل وتريد
للاتصال بالوكيل الخارجي.
-صريح بدلاً من قبول اتصال SPDY/HTTPS ،
قبول اتصال HTTP والتواصل مع
الخادم الخلفي في spdy. لاستخدام SHRPX AS
بروكسي إلى الأمام ، استخدم -P خيار بدلاً من ذلك.
-P ،-خيار مثل-proxy-ice-client ، ولكنه يتطلب أيضًا
يجب أن يكون مسار الطلب من الواجهة الأمامية
URI المطلق ، مناسبة للاستخدام كملف
وكيل إلى الأمام.
قطع الأشجار:
-l ،-المستوى السطحي = <stly>
ضبط مستوى شدة إخراج السجل.
المعلومات والتحذير والخطأ والمميت.
الافتراضي: تحذير
-AccessLog طباعة الوصول البسيط إلى Stderr.
-Syslog إرسال رسائل السجل إلى syslog.
-syslog-facility = <fiility>
تعيين مرفق syslog.
الافتراضي: Daemon
متفرقات:
-add-x-forward-for
إلحاق X-Forwarded-for Header Field إلى
طلب المصب.
-لا تتم إلحاقها عبر حقل الرأس. إذا عبر
تم استلام حقل الرأس ، ويترك
دون تغيير.
-D ، -Daemon Run في خلفية. إذا تم استخدام -D ،
يتم تغيير دليل العمل الحالي إلى "/".
-ملف pid = <path> تعيين المسار لحفظ PID لهذا البرنامج.
-user = <Ser> قم بتشغيل هذا البرنامج كمستخدم. هذا الخيار هو
المقصود لاستخدامه لإسقاط امتيازات الجذر.
---CONF = <PATH> تكوين تحميل من PATH.
الافتراضي: /etc/shrpx/shrpx.conf
-v ، -نسخة الطباعة والخروج.
-H ، -Help اطبع هذه المساعدة والخروج.
بالنسبة لأولئك منكم الفضوليين ، فإن shrpx هو اختصار لـ "spdy/https to http الوكيل العكسي".
بدون أي من خيارات -s و --spdy-bridge و -p و --client ، يعمل shrpx كوكيل عكسي لخادم الواجهة الخلفية:
العميل <-(spdy ، https)-> shrpx <-(http)-> خادم الويب
[عكس الوكيل]
مع خيار -s ، يعمل كوكيل آمن:
العميل <-(spdy ، https)-> shrpx <-(http)-> الوكيل
[Spdy Proxy] (على سبيل المثال ، الحبار)
يجب تكوين Client في ما سبق لاستخدام SHRPX كوكيل آمن.
في وقت كتابة هذا التقرير ، يكون Chrome هو المتصفح الوحيد الذي يدعم الوكيل SPDY الآمن. طريقة واحدة لتكوين Chrome لاستخدام Proxy Secure SPDY هي إنشاء برنامج نصي proxy.pac مثل هذا:
وظيفة findproxyforurl (url ، مضيف) {
إرجاع "https serveraddr: port" ؛
}
SERVERADDR و PORT هو اسم المضيف/العنوان ومنفذ الجهاز SHRPX يعمل. يرجى ملاحظة أن Chrome يتطلب شهادة صالحة للوكيل spdy الآمن.
ثم قم بتشغيل Chrome مع الحجج التالية:
$ google-chrome-proxy-pac-url = file: ///path/to/proxy.pac-use-npn
ملحوظة
في وقت كتابة هذا التقرير ، يحد Chrome 24 من الحد الأقصى من الاتصالات المتزامنة بالوكالة إلى 32. وبسبب الحد من معالجة تجمع المقبس في الكروم ، يتم ملؤها بسرعة إذا تم استخدام وكيل spdy وتأسيس العديد من جلسات spdy. إذا وصلت إلى الحد الأقصى ، يتم حظر الاتصالات الجديدة ببساطة حتى يتم توقيت الاتصالات الموجودة. (انظر chrome إصدار 92244). إن الحل البديل هو جعل عدد الاتصالات القصوى عالية ، على سبيل المثال ، 99 ، وهو الأعلى. للقيام بذلك ، تحتاج إلى تغيير ما يسمى إعداد السياسة. راجع قوالب السياسة للحصول على تفاصيل كيفية تغيير إعداد السياسة على النظام الأساسي الذي تستخدمه. اسم السياسة الذي نبحث عنه هو maxConnectionSproxy على سبيل المثال ، إذا كنت تستخدم Linux ، اتبع التعليمات الموضحة في Linux Quick Start و Createc /etc/opt/chrome/policies/managed/test_policy.json Policies/managed/test_policy.json ملف مع المحتوى التالي وإعادة تشغيل الكروم:
{
"MaxConnectionsperproxy": 99
}
مع --spdy-bridge ، يقبل اتصالات spdy/https وتواصل مع الخلفية في spdy:
العميل <-(spdy ، https)-> shrpx <-(spdy)-> ويب أو وكيل spdy إلخ
[جسر Spdy] (على سبيل المثال ، shrpx -s)
مع خيار -p ، فإنه يعمل كوكيل للأمام ويتوقع أن تكون الواجهة الخلفية مؤلفة من الوكيل المتوافق:
العميل <-(http)-> shrpx <-(spdy)-> وكيل spdy آمن
[بروكسي إلى الأمام] (مثل ، shrpx -s أو node -spdyproxy)
يحتاج Client إلى تكوينه لاستخدام SHRPX كوكيل أمامي.
في هذا التكوين ، يمكن للعملاء الذين لا يدعمون الوكيل الآمن spdy استخدام الوكيل spdy آمن من خلال shrpx . وضع shrpx في نفس المربع أو نفس الشبكة مع العملاء ، يمكن أن يجلب هذا التكوين فوائد الوكيل الآمن للمواد المتوحنة لهؤلاء العملاء. نظرًا لأن الحد الأقصى لعدد الاتصالات لكل خادم لا يزال يتم تطبيقه في اتصال الوكيل ، فإن كسب الأداء غير واضح. على سبيل المثال ، إذا كان الحد الأقصى لعدد الاتصالات لكل خادم هو 6 ، بعد إرسال 6 طلبات إلى الوكيل ، يقوم العميل بإجراء مزيد من الطلبات ، مما يقتل الأداء الذي قد يتم الحصول عليه في اتصال SPDY. بالنسبة للعملاء الذين يمكنهم تعديل هذه القيم (على سبيل المثال ، network.http.max-connections-per-server في Firefox) ، قد يؤدي زيادة الأداء إلى تحسين الأداء.
مع-خيار --client ، فإنه يعمل كوكيل عكسي ويتوقع أن يكون الواجهة الخلفية خادم الويب الممكّن من توبيخ:
العميل <-(http)-> shrpx <-(spdy)-> خادم الويب
[عكس الوكيل]
بالنسبة إلى أوضاع التشغيل التي تتحدث إلى الواجهة الخلفية في SPDY ، يمكن نقل اتصالات الواجهة الخلفية على الرغم من وكيل HTTP. تم تحديد الوكيل باستخدام- --backend-http-proxy-uri . يوضح الشكل التالي مثال خيار --spdy-bridge و- --backend-http-proxy-uri للتحدث إلى الوكيل الخارجي من خلال وكيل HTTP:
العميل <-(spdy ، https)-> shrpx <-(spdy)-
[Spdy Bridge]
-==================== ---> الوكيل spdy
(HTTP Proxy Tunnel) (EG ، SHRPX -S)
يحتوي دليل الأمثلة على تطبيق عميل بسيط في C.
تأتي المكتبة مع طباعة Python Wrapper python-spdylay . انظر دليل python .