Я пробовал несколько примеров сокетов домена unix на perl с использованием абстрактных имен: создал сокет, начинающийся с нулевого символа:
my $socket_path = "\0wibble";
используя netstat -nlp, я вижу сокет:
unix 2 [ ACC ] STREAM LISTENING 309510 3448/perl @wibble
В примерах все работает, но ...
Я хочу использовать fastCGI в nginx с сокетами домена unix, используя абстрактные имена:
Итак, в nginx.conf:
Using fastcgi_pass "/tmp/wibble"; #is Ok
But using fastcgi_pass "unix:Any_name"; #is not Ok!!
Я попытался \0wibble \zwibble \x{0}wibble
и это не сработало!
На fastcgi-wrapper.pl я пробовал:
Using $socket = FCGI::OpenSocket( "/tmp/wibble", 10 ); #is Ok
But using fastcgi_pass "unix:Any_name"; #is not Ok!!
Я попытался \0wibble \zwibble \x{0}wibble
и это не сработало!
Кстати: Я хочу использовать chroot на nginx и chroot в perl, поэтому я не могу использовать сокет файловой системы, так как это будет выход из тюрьмы и недостаток безопасности ...
nginx не поддерживает абстрактные сокеты (на сегодняшний день). тем не мение существует неофициальный патч который обеспечивает эту поддержку. После применения вы можете ссылаться на абстрактный сокет как @wibble
. Если вы используете этот патч, обязательно прочитайте всю ветку форума nginx о нем, так как он относится к различным изменениям, внесенным в патч.