2013-02-24 1 views
3

토네이도와 협력, 내가 설정 아래, 명령 줄에서 응용 프로그램을 실행하는 동안 잘 작동 GZIP = 진정한 기능을 발견했습니다 동안 :tornadoweb GZIP = supervisord과의 nginx에서 작동하지 않는 진정한

define("port", default=settings.LISTEN_PORT, help="run on the given port", type=int) 
define("debug", default=True, help="run in debug mode", type=bool) 
define("dont_optimize_static_content", default=False, 
     help="Don't combine static resources", type=bool) 
define("dont_embed_static_url", default=False, 
     help="Don't put embed the static URL in static_url()", type=bool) 

tornado.options.parse_command_line() 
tornado.options.options['log_file_prefix'].set('/var/log/tmp.log') 

app_settings = dict(
    template_path=os.path.join(os.path.dirname(__file__), "templates"), 
    static_path=os.path.join(os.path.dirname(__file__), "static"), 
    xsrf_cookies=False, 
    gzip=True, 
    debug=True, 
) 

을 그러나 배포를, tornado 서버의 supervisord/nginx 응답이있는 app은 gzip되지 않습니다.

[program:app-8001] 
command=python /var/app/server/app.py --port=8001 --logging=debug ----dont_optimize_static_content=False 
directory=/var/app/server/ 
stderr_logfile = /var/log/app-stderr.log 
stderr_logfile_backups=10 
stdout_logfile = /var/log/app-stdout.log 
stdout_logfile_backups=10 
process_name=%(program_name)s 
loglevel=debug 

어떤 아이디어가 잘못 되었나요?

+0

나는 당신의 버그라고 생각하지 않지만, 감독자 명령에 너무 많은 '----'이 있습니다. – koblas

+0

죄송합니다,이 문제는 ... – user1632928

답변

1

기본적으로 nginx는 토네이도에 대한 요청을 프록시 할 때 HTTP/1.1 요청을하지 않습니다. Tornado는 gzip으로 처리 된 콘텐츠를 반환하기 위해 HTTP/1.1을 지원해야합니다. 내 인스턴스에서 작동하지 않습니다하지만 - web.py

def __init__(self, request): 
    self._gzipping = request.supports_http_1_1() and \ 
     "gzip" in request.headers.get("Accept-Encoding", "") 

에서

중요한 코드는, 그것은 당신의 설정 파일에 다음을 추가하여 덮어 쓸 수 있어야한다.

proxy_http_version 1.1;