标签: chunked

启用 nginx 分块传输编码

看起来nginx 0.8.35 可能支持分块传输编码

nginx 0.8.35 2010 年 4 月 1 日的变化

*) Change: now the charset filter runs before the SSI filter.

*) Feature: the "chunked_transfer_encoding" directive.
Run Code Online (Sandbox Code Playgroud)

这很棒,因为我正在尝试通过 nginx 反向代理将 git 更改推送到 git-http-backend 进程。出于客户端效率原因, Git HTTP 利用分块传输编码。

但是,我无法让它工作。我在 Debian Lenny 上使用 nginx 0.8.44 并使用以下配置调用:

./configure \
--sbin-path=/usr/sbin \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--user=www-data \
--group=www-data \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-http_realip_module
Run Code Online (Sandbox Code Playgroud)

以及以下配置文件:

server {
    server_name example.com;
    location / {
        proxy_pass  http://192.168.0.10; …
Run Code Online (Sandbox Code Playgroud)

nginx git chunked

20
推荐指数
3
解决办法
4万
查看次数

通过 nginx 获取分块请求

首先是一些背景:我们有一个嵌入式设备,可以将许多小事件上传到 Web 服务器。分块编码用于发布此信息。每个事件都作为一个单独的块发送,因此网络服务器 (node.js) 可以立即对事件做出反应。所有这一切都像一种魅力。

禁用服务器并在服务器上运行 netcat 显示设备发送的内容:

sudo nc -l 8080
POST /embedded_endpoint/ HTTP/1.1
Host: url.com
User-Agent: spot/33-dirty
Transfer-Encoding: chunked
Accept: text/x-events
Content-Type: text/x-events
Cache-Control: no-cache

120
{"some","json message"}
232
{"other","json event"}
232
{"and a lot more","up to 150 messages per second!"}
0
Run Code Online (Sandbox Code Playgroud)

现在我在我的网络服务器上安装了 nginx(版本 1.6.0)。最后我希望它处理 SSL 并且我想处理加速正常的网络流量。

如果我现在使用此服务器配置启用 nginx:

server {
  listen 8080;

  location / {
    proxy_http_version 1.1;
    expires off;
    proxy_buffering off;
    chunked_transfer_encoding on;
    proxy_pass http://localhost:5000;
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我收到这个:

sudo nc -l 8080
POST /embedded_endpoint/ HTTP/1.1
Host: localhost:5000 …
Run Code Online (Sandbox Code Playgroud)

http nginx reverse-proxy request chunked

7
推荐指数
1
解决办法
2万
查看次数

如何禁用传输编码:使用 HTTP/1.1 响应在 Apache 中分块

我有一个 mod_include (SSI) 页面,它在 HTTP/1.1 浏览器请求时在分块编码期间生成错误输出。

当 HTTP/1.0 请求页面时,页面输出正常(因为输出没有分块)。

如何在 HTTP/1.1 浏览器请求时告诉 Apache不要使用分块编码?

更多信息:错误的分块输出是由于在带有 sparc 处理器的 Solaris 5.10 机器上启用了 sendfile() 支持造成的。禁用 sendfile() 支持会导致这个问题消失;但是我试图抓住这个错误并修复它。

encoding chunked apache-2.2

6
推荐指数
2
解决办法
6万
查看次数

内容长度和传输编码Chunked nginx, node-http-proxy

我有以下设置 - node-http-proxy 充当反向代理,根据需要将所有请求转发到 nginx/socket.io

我的问题是当我从浏览器发送 HTTP DELETE 请求时,node-http-proxy 添加一个标头“传输编码分块”,因为来自浏览器的请求没有内容长度。来自浏览器的请求没有内容长度,因为它没有正文。Nginx 不喜欢 Transfer Encoding Chunked Header 并抛出 411 要求 Content-Length。

当我将虚拟数据作为 DELETE 请求的一部分发送时,问题就解决了,因此存在内容长度并且 node-http-proxy 不添加传输编码分块标头并且 nginx 很高兴。

我想了解 node-http-proxy 是否没有按预期工作,因为它在内容长度丢失时添加了传输编码分块标头,因为没有内容正文。

编辑 - 更多信息:

当我尝试删除 node-http-proxy 并直接将请求发送到 nginx 时,nginx 对此很满意。请注意,浏览器没有设置内容长度(因为正文是空的)和传输编码分块

nginx node.js chunked

6
推荐指数
1
解决办法
5254
查看次数

标签 统计

chunked ×4

nginx ×3

apache-2.2 ×1

encoding ×1

git ×1

http ×1

node.js ×1

request ×1

reverse-proxy ×1