added a section in HTTP 1.0 outputs to README.

This commit is contained in:
agentzh (章亦春) 2011-01-09 20:30:27 +08:00
Родитель 17bffb5c26
Коммит 69527323ab
1 изменённых файлов: 36 добавлений и 0 удалений

Просмотреть файл

@ -962,6 +962,42 @@ For instance,
local res = ndk.set_var.set_escape_uri('a/b');
-- now res == 'a%2fb'
Trouble Shooting
================
HTTP 1.0 responses
------------------
Sometimes you may want to use nginx's ngx_proxy module to proxy requests to
another nginx machine which configured a location with `content_by_lua`. Because
`proxy_pass` only supports the HTTP 1.0 protocol, you have to pre-calculate
the length of your response body and set the `Content-Length` header before emitting
any data out. Here is a small example:
On machine A:
location /internal {
rewrite ^/internal/(.*) /lua/$1 break;
proxy_pass http://B;
}
then on machine B:
location = /lua/foo {
content_by_lua '
data = "hello, world"
ngx.header.content_length = #data
ngx.print(data)
';
}
Then accessing machine A's /internal/foo using curl gives the result that we expect.
But some caveats apply here:
1. Always set the `Content-Length` header *before* calling `ngx.print()` or `ngx.say()`.
2. Only send out the response body data in a single call of `ngx.print()` or `ngx.say()`.
Performance
===========