SYSTEMD-SOCKET-PROXYD(8)

الاسم
systemd-socket-proxyd - وكيل ثنائي الاتجاه للمقابس المحلية إلى مقبس آخر (ربما بعيد)

موجز

systemd-socket-proxyd [OPTIONS...] HOST:PORT

systemd-socket-proxyd [OPTIONS...] UNIX-DOMAIN-SOCKET-PATH

الوصف

systemd-socket-proxyd هو برنامج خفي وكيل إعادة توجيه مقابس شبكة مُفعّل بالمقبس عام لـ IPv4 و IPv6 ومقابس تيار UNIX. يمكن استخدامه لإعادة توجيه حركة المرور ثنائي الاتجاه من مقبس استماع محلي إلى مقبس وجهة محلي أو بعيد.

أحد استخدامات هذه الأداة هو توفير دعم تفعيل المقبس للخدمات التي لا تدعم تفعيل المقبس أصلاً. نيابة عن الخدمة المراد تفعيلها، يرث الوكيل المقبس من systemd، ويقبل كل اتصال عميل، ويفتح اتصالاً بخادم مُهيأ لكل عميل، ثم يعيد توجيه البيانات ثنائي الاتجاه بينهما.

سلوك هذه الأداة مشابه لـ socat(1). الاختلافات الرئيسية لـ systemd-socket-proxyd هي دعم تفعيل المقبس مع "Accept=no" وتصميم يعتمد على الأحداث يتوسع بشكل أفضل مع عدد الاتصالات.

لاحظ أن systemd-socket-proxyd لن يعيد توجيه معلومات القناة الجانبية للمقبس، أي لن يعيد توجيه SCM_RIGHTS و SCM_CREDENTIALS و SCM_SECURITY و SO_PEERCRED و SO_PEERPIDFD و SO_PEERSEC و SO_PEERGROUPS وما شابه.

الخيارات

الخيارات التالية مفهومة:

-h، --help
    اطبع نص مساعدة قصير واخرج.

--version
    اطبع سلسلة إصدار قصيرة واخرج.

--connections-max=, -c
    يضبط الحد الأقصى لعدد الاتصالات المتزامنة، المبدئي هو 256. إذا تم الوصول إلى حد الاتصالات المتزامنة، سيتم رفض الاتصالات الإضافية.

    أُضيف في الإصدار 233.

--exit-idle-time=
    يضبط الوقت قبل الخروج عندما لا توجد اتصالات، المبدئي هو infinity. يأخذ قيمة بدون وحدة بالثواني، أو قيمة نطاق زمني مثل "5min 20s".

    أُضيف في الإصدار 246.

--proxy-protocol=
    يستخدم بروتوكول PROXY[1] للتواصل مع الخادم. يسمح هذا لخادم مُهيأ بشكل مناسب بمعرفة عنوان IP الحقيقي للعميل. يأخذ إصدار بروتوكول PROXY[1] المستخدم، ويدعم فقط "v1" حالياً. المبدئي هو عدم استخدام بروتوكول PROXY.

    أُضيف في الإصدار 261.

حالة الخروج

عند النجاح، يُعاد الرقم 0، وإلا فيُعاد رمز فشل غير صفري.

أمثلة

  مثال بسيط

استخدام خدمتين مع تبعية وبدون عزل مساحة الاسم.

مثال 1. proxy-to-nginx.socket

    [Socket]
    ListenStream=80

    [Install]
    WantedBy=sockets.target

مثال 2. proxy-to-nginx.service

    [Unit]
    Requires=nginx.service
    After=nginx.service
    Requires=proxy-to-nginx.socket
    After=proxy-to-nginx.socket

    [Service]
    Type=notify
    ExecStart=/usr/lib/systemd/systemd-socket-proxyd /run/nginx/socket
    PrivateTmp=yes
    PrivateNetwork=yes

مثال 3. nginx.conf

    [...]
    server {
        listen       unix:/run/nginx/socket;
        [...]

مثال 4. تفعيل الوكيل

    # systemctl enable --now proxy-to-nginx.socket
    $ curl http://localhost:80/

إذا كانت خدمة nginx.service تحتوي على StopWhenUnneeded= مضبوطًا، فإن تمرير --exit-idle-time= إلى systemd-socket-proxyd يسمح لكلتا الخدمتين بالتوقف خلال فترات الخمول.

  مثال النطاق

مماثل لما سبق، لكنه يشغل وكيل المقبس والخدمة الرئيسية في نفس النطاق الخاص، بافتراض أن nginx.service تحتوي على PrivateTmp= و PrivateNetwork= مضبوطين أيضًا.

مثال 5. proxy-to-nginx.socket

    [Socket]
    ListenStream=80

    [Install]
    WantedBy=sockets.target

مثال 6. proxy-to-nginx.service

    [Unit]
    Requires=nginx.service
    After=nginx.service
    Requires=proxy-to-nginx.socket
    After=proxy-to-nginx.socket
    JoinsNamespaceOf=nginx.service

    [Service]
    Type=notify
    ExecStart=/usr/lib/systemd/systemd-socket-proxyd 127.0.0.1:8080
    PrivateTmp=yes
    PrivateNetwork=yes

مثال 7. nginx.conf

    [...]
    server {
        listen       8080;
        [...]

مثال 8. تمكين الوكيل

    # systemctl enable --now proxy-to-nginx.socket
    $ curl http://localhost:80/

  مثال بروتوكول PROXY مع nginx

systemd-socket-proxyd و nginx باستخدام بروتوكول PROXY

مثال 9. proxy-to-nginx.socket

    [Socket]
    ListenStream=80

    [Install]
    WantedBy=sockets.target

مثال 10. proxy-to-nginx.service

    [Unit]
    Requires=nginx.service
    After=nginx.service
    Requires=proxy-to-nginx.socket
    After=proxy-to-nginx.socket

    [Service]
    Type=notify
    ExecStart=/usr/lib/systemd/systemd-socket-proxyd --proxy-protocol=v1 /run/nginx/socket
    PrivateTmp=yes
    PrivateNetwork=yes

مثال 11. nginx.conf

    [...]
    server {
        listen         unix:/run/nginx/socket proxy_protocol;
        real_ip_header proxy_protocol;
        [...]

مثال 12. تمكين الوكيل

    # systemctl enable --now proxy-to-nginx.socket
    $ curl http://localhost:80/

انظر أيضًا

systemd(1), systemd.socket(5), systemd.service(5), systemctl(1), socat(1), nginx(1), curl(1), PROXY protocol specification[1], nginx: Accepting the PROXY Protocol[2]

ملاحظات

1.  بروتوكول PROXY
    https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt

2.  nginx: قبول بروتوكول PROXY
    https://docs.nginx.com/nginx/admin-guide/load-balancer/using-proxy-protocol/

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.