| SYSTEMD-SOCKET-PROXYD(8) | systemd-socket-proxyd | SYSTEMD-SOCKET-PROXYD(8) |
نام (NAME)
systemd-socket-proxyd - پروکسی هدایت سوکتهای دوطرفه در systemd
خلاصه دستور (SYNOPSIS)
systemd-socket-proxyd [OPTIONS...] HOST:PORT
systemd-socket-proxyd [OPTIONS...] UNIX-DOMAIN-SOCKET-PATH
توضیحات (DESCRIPTION)
systemd-socket-proxyd یک دیمن پروکسی و هدایتکننده عمومی سوکتهای شبکه مبتنی بر فعالسازی با سوکت (socket-activated) برای سوکتهای جریانی IPv4، IPv6 و UNIX است. از این ابزار میتوان برای هدایت دوطرفه ترافیک از یک سوکت شنود محلی به یک سوکت مقصد محلی یا راهدور استفاده کرد.
یکی از کاربردهای این ابزار، ارائه پشتیبانی از فعالسازی با سوکت برای سرویسهایی است که بهطور بومی از فعالسازی با سوکت پشتیبانی نمیکنند. این پروکسی از طرف سرویسی که باید فعال شود، سوکت را از systemd به ارث میبرد، هر اتصال کلاینت را میپذیرد، برای هر کلاینت یک اتصال به سرور پیکربندیشده باز میکند و سپس دادهها را بهصورت دوطرفه بین آن دو هدایت مینماید.
رفتار این ابزار مشابه socat(1) است. تفاوتهای اصلی systemd-socket-proxyd پشتیبانی از فعالسازی سوکت با "Accept=no" و یک طراحی مبتنی بر رویداد (event-driven) است که با تعداد اتصالات مقیاسپذیری بهتری دارد.
توجه داشته باشید که systemd-socket-proxyd اطلاعات کانال جانبی سوکت را هدایت نخواهد کرد؛ یعنی مواردی مانند SCM_RIGHTS، SCM_CREDENTIALS، SCM_SECURITY، SO_PEERCRED، SO_PEERPIDFD، SO_PEERSEC، SO_PEERGROUPS و مانند آن را هدایت نمیکند.
گزینهها (OPTIONS)
گزینههای زیر پشتیبانی میشوند:
-h, --help
--version
--connections-max=, -c
در نسخه ۲۳۳ اضافه شد.
--exit-idle-time=
در نسخه ۲۴۶ اضافه شد.
--proxy-protocol=
در نسخه ۲۶۱ اضافه شد.
وضعیت خروج (EXIT STATUS)
در صورت موفقیت، 0 بازگردانده میشود؛ در غیر این صورت یک کد خرابی غیرصفر بازگردانده خواهد شد.
مثالها (EXAMPLES)
مثال ساده
استفاده از دو سرویس با یک وابستگی و بدون جداسازی فضای نام (namespace).
مثال ۱. proxy-to-nginx.socket
[Socket] ListenStream=80 [Install] WantedBy=sockets.target
مثال ۲. 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
مثال ۳. nginx.conf
[...]
server {
listen unix:/run/nginx/socket;
[...]
مثال ۴. فعالسازی پروکسی
# systemctl enable --now proxy-to-nginx.socket $ curl http://localhost:80/
اگر nginx.service گزینه StopWhenUnneeded= را تنظیم کرده باشد، ارسال --exit-idle-time= به systemd-socket-proxyd اجازه میدهد هر دو سرویس در طول دورههای بیکاری متوقف شوند.
مثال فضای نام
مشابه بالا، اما اجرای پروکسی سوکت و سرویس اصلی در یک فضای نام خصوصی یکسان، با فرض اینکه nginx.service نیز گزینههای PrivateTmp= و PrivateNetwork= را تنظیم کرده باشد.
مثال ۵. proxy-to-nginx.socket
[Socket] ListenStream=80 [Install] WantedBy=sockets.target
مثال ۶. 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
مثال ۷. nginx.conf
[...]
server {
listen 8080;
[...]
مثال ۸. فعالسازی پروکسی
# systemctl enable --now proxy-to-nginx.socket $ curl http://localhost:80/
مثال پروتکل PROXY با nginx
استفاده از پروتکل PROXY توسط systemd-socket-proxyd و nginx
مثال ۹. proxy-to-nginx.socket
[Socket] ListenStream=80 [Install] WantedBy=sockets.target
مثال ۱۰. 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
مثال ۱۱. nginx.conf
[...]
server {
listen unix:/run/nginx/socket proxy_protocol;
real_ip_header proxy_protocol;
[...]
مثال ۱۲. فعالسازی پروکسی
# systemctl enable --now proxy-to-nginx.socket $ curl http://localhost:80/
همچنین ببینید (SEE ALSO)
systemd(1), systemd.socket(5), systemd.service(5), systemctl(1), socat(1), nginx(1), curl(1), مشخصات پروتکل PROXY[1], nginx: پذیرش پروتکل PROXY[2]
نکات (NOTES)
- 1.
- پروتکل PROXY
- 2.
- nginx: پذیرش پروتکل PROXY
| systemd 261.2 |