Nginx

如何在 nginx 中使用帶有 fastcgi 的 unix 域套接字的抽象名稱?

  • April 24, 2013

我嘗試了一些使用抽象名稱的 unix 域套接字的 perl 範例: 創建了一個以空字元開頭的套接字:

my $socket_path = "\0wibble";

使用 netstat -nlp 我可以看到套接字:

unix  2      [ ACC ]     STREAM     LISTENING     309510   3448/perl            @wibble

在範例中一切正常,但是…

我想在 nginx 中使用 fastCGI 和使用抽象名稱的 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了,它沒有用!

順便說一句:我想在 nginx 上使用 chroot,在 perl 中使用 chroot,所以我不能使用文件系統套接字,因為這將是越獄的路徑和安全漏洞……

nginx 不支持抽象套接字(截至今天)。但是,存在提供此支持的非官方更新檔。應用後,您可以將抽象套接字稱為@wibble. 如果您使用此更新檔,請務必閱讀有關它的整個 nginx 論壇文章,因為它指的是對更新檔所做的各種更改。

引用自:https://serverfault.com/questions/502121