Назад | Перейти на главную страницу

Как использовать абстрактные имена сокетов домена unix с fastcgi в nginx?

Я пробовал несколько примеров сокетов домена 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 о нем, так как он относится к различным изменениям, внесенным в патч.