SCGI

excanoe nginx-forum на nginx.us
Чт Дек 8 17:16:42 UTC 2011


Andrey Repin Wrote:
-------------------------------------------------------
> Здравствуйте,
> Уважаемый(-ая, -ое) excanoe!
> 
> e> Столкнулся с данной
> ошибкой: ответы от
> e> scgi сервера не сжимаются.
> 
> И как вы это определили?
> 
> curl -siIH "Accept-Encoding: deflate,gzip"
> http://хост/адрес_скрипта
> что говорит?
> 
> e> привожу код сервера на
> руби и
> e> конфигурацию nginx
> (конфигурация
> e> тестовая):
> 
> e>
> ##################################################
> ####################
> 
> e> worker_processes 1;
> 
> e> events{
> e>   worker_connections 1024;
> e> }
> 
> e> http{
> e>   server_tokens off;
>    
> e>   default_type text/plain;
>   
> e>   gzip on;
> e>   gzip_types text/plain;
>   
> e>   types{
> e>     text/plain js css txt;
> e>   }
>   
> e>   server{
> e>     return 404;
> e>   }
>   
> e>   server{
> e>     server_name localhost;
>     
> e>     scgi_buffering off;
>     
> e>     location / {
> e>       try_files $uri @engine;
> e>     }
>     
> e>     location @engine {
> e>       include scgi_params;
> e>       scgi_pass 127.0.0.1:9000;
> e>     }
> e>   }
> e> }
> 
> e>
> ##################################################
> ####################
> 
> e> #coding: utf-8
> 
> e> require "socket"
> e> require "thread"
> e> require "openssl"
> e> require "erb"
> 
> e>
> scgid=Socket.new(Socket::AF_INET,Socket::SOCK_STRE
> AM,0)
> e>
> scgid.bind(Socket.pack_sockaddr_in(9000,"127.0.0.1
> "))
> e> scgid.listen(1)
> 
> e> loop{
> e>   scgi=scgid.accept[0]
> e>   Thread.new{
> e>     begin
>       
> e>      
> f=File.new(Time.now.to_f.to_s+".bin","wb")
> e>       while(f.syswrite scgi.sysread 4096)==4096
> e>       end
> e>       f.close
> e>       File.unlink f.path
>       
> e>       scgi.syswrite "Status: 200
> OK\r\nContent-Type:
> e> text/plain\r\n\r\n"
>       
> e>       scgi.syswrite "ok"
>       
> e>       #header_size   =""
> e>       #header_pairs  =""
> e>       #while (header_size=~/:/)==nil
> e>       #  header_size+=scgi.sysread 1
> e>       #end
> e>       #header_size=header_size.to_i
> e>       #while header_pairs.size<header_size
> e>       #  header_pairs+=scgi.sysread 1
> e>       #end
>       
> e>       #env=Hash[*header_pairs.split("\0")]
>       
> e>       #scgi.syswrite "Status: 200
> OK\r\nContent-Type:
> e> text/plain\r\nContent-Length:
> "+env.to_s.size.to_s+"\r\n\r\n"
> e>       #scgi.syswrite env.to_s
> 
> e>       scgi.close
> e>     rescue=>err
> e>       p err
> e>     end
> e>   }
> e> }
> 
> e> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,219800,219800#m
> sg-219800
> 
> e> _______________________________________________
> e> nginx-ru mailing list
> e> nginx-ru at nginx.org
> e>
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
> 
> 
> -- 
> С уважением
> 
>     Andrey Repin (hell-for-yahoo at umail.ru)
> четверг, 08.12.2011, <20:43>
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru

ответ curl

d:\temp\db\scgi>curl -siIH "Accept-Encoding: deflate,gzip"
http://localhost
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 08 Dec 2011 17:11:15 GMT
Content-Type: text/plain
Connection: keep-alive

я тестирую под windows в данный момент,
проверял ответы fastcgi php, отдаются как
gzip.
также проверял простой текстовый файл
(который в папке по умолчанию docroot).

d:\temp\db\scgi>curl -siIH "Accept-Encoding: deflate,gzip"
http://localhost/index.html
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 08 Dec 2011 17:15:59 GMT
Content-Type: text/plain
Last-Modified: Mon, 04 Oct 2004 13:04:06 GMT
Connection: keep-alive
Content-Encoding: gzip

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,143458,219807#msg-219807



Подробная информация о списке рассылки nginx-ru