在使用龙卷风时,我发现gzip = True功能,在命令行运行应用程序时工作正常,位于以下设置:
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,
)
然而,使用来自龙卷风服务器的supervisord / nginx响应部署应用程序并不是gziped。
[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 :(得分:1)
默认情况下,当nginx代理对Tornado(或其他任何事情)的请求时,它不会执行HTTP / 1.1请求。 Tornado需要HTTP / 1.1支持才能返回gzip的内容。
来自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;