Nginx
如何在 nginx 中使用帶有 fastcgi 的 unix 域套接字的抽象名稱?
我嘗試了一些使用抽象名稱的 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 論壇文章,因為它指的是對更新檔所做的各種更改。