在Nginx + uWsgi + Web.py的HTTP响应中缺less头文件

所有,

我的环境是Nginx + uWsgi + Web.py。 我得到了以下HTTP响应:

Connection keep-alive Date Mon, 28 Oct 2013 09:02:50 GMT Server nginx Transfer-Encoding chunked 

但是,回应应该是这样的Apache + mod_wsgi产生的:

  Connection Keep-Alive Content-Encoding gzip Content-Length 26225 Content-Type text/html; charset=UTF-8 Date Mon, 28 Oct 2013 08:08:33 GMT Keep-Alive timeout=15, max=100 Server Apache Vary * 

所以,有很多头失踪。 无法弄清楚….

我的nginxconfiguration如下所示:

 http { charset utf-8; # Set the mime-types via the mime.types external file include mime.types; # And the fallback mime-type default_type application/octet-stream; #default_type text/html; # Click tracking! access_log /var/log/nginx/access.log; # Hide nginx version server_tokens off; # ~2 seconds is often enough for HTML/CSS, but connections in # Nginx are cheap, so generally it's safe to increase it keepalive_timeout 20; # You usually want to serve static files with Nginx sendfile on; tcp_nopush on; # off may be better for Comet/long-poll stuff tcp_nodelay off; # on may be better for Comet/long-poll stuff server_name_in_redirect off; types_hash_max_size 2048; gzip on; gzip_http_version 1.0; gzip_comp_level 5; gzip_min_length 512; gzip_buffers 4 8k; gzip_proxied any; gzip_types # text/html is always compressed by HttpGzipModule text/css text/plain text/x-component application/javascript application/json application/xml application/xhtml+xml application/x-font-ttf application/x-font-opentype application/vnd.ms-fontobject image/svg+xml image/x-icon; # This should be turned on if you are going to have pre-compressed copies (.gz) of # static files available. If not it should be left off as it will cause extra I/O # for the check. It would be better to enable this in a location {} block for # a specific directory: # gzip_static on; gzip_disable "msie6"; gzip_vary on; # Upstream to abstract backend connection(s) for PHP upstream php { server unix:/run/php-fpm/php-fpm.sock; } server { ## listen for ipv4; this line is default and implied listen 80 default; ## listen for ipv6 #listen [::]:80 default ipv6only=on; # Make site accessible from http://localhost/ server_name localhost; server_name_in_redirect off; charset utf-8; access_log /log/access.log; error_log /log/error.log debug; root /home/www; index index.html index.htm index.php; location ~ \.php$ { .... } location / { uwsgi_pass unix:/tmp/uwsgi.sock; include uwsgi_params; } } 

而我的uWsgiconfiguration是:

 [uwsgi] plugins = python2 chdir = /home/pycode module = code processes = 2 max-requests = 5000 chmod-socket = 666 master = True vacuum = True disable-logging = True enable-threads = True socket = /tmp/uwsgi.sock pidfile = /run/uwsgi.pid workers = 4 reload-mercy = 8 uid = http gid = http 

web.py上的python代码使用Jinja2模板,没有什么特别的,在Apache + mod_wsgi中运行良好。

顺便说一下,在我的情况下,nginx + php-fpm产生正确的响应。 所以我想这个问题是与uwsgiconfiguration。

任何帮助?

谢谢你。

由于缺少的头文件是由网络服务器添加的,因此不会丢失头文件 。 除非配置,否则每个配置(httpd + modwsgi和nginx + uwsgi)默认发送一些标头。

我遇到这个,这是因为缺少标题的价值没有引用。 一个纯粹的卷曲请求显示标题。 尽管Python请求,查尔斯和httpie没有显示与未引用的值的头(在我的情况下,它是一个ETag头)。