1
0
mirror of https://github.com/ipfs/kubo.git synced 2025-08-06 11:31:54 +08:00

doc: document reverse proxy bug

see https://github.com/ipfs/go-ipfs/issues/6402
This commit is contained in:
Steven Allen
2020-06-15 17:01:40 -07:00
parent 0ef5ea4d5c
commit 406d70ff7c

View File

@ -12,11 +12,16 @@ reverse HTTP proxy (usually NGINX). You may need a reverse proxy to:
* Block content. * Block content.
* Rate limit and timeout requests. * Rate limit and timeout requests.
* Apply QoS rules (e.g., prioritize traffic for certain important IPFS resources). * Apply QoS rules (e.g., prioritize traffic for certain important IPFS resources).
* Expose a limited subset of the HTTP API.
This document contains a collection of tips, tricks, and pitfalls when running a This document contains a collection of tips, tricks, and pitfalls when running a
go-ipfs node behind a reverse HTTP proxy. go-ipfs node behind a reverse HTTP proxy.
**WARNING:** Due to
[nginx#1293](https://trac.nginx.org/nginx/ticket/1293)/[go-ipfs#6402](https://github.com/ipfs/go-ipfs/issues/6402),
parts of the go-ipfs API will not work correctly behind an NGINX reverse proxy
as go-ipfs starts sending back a response before it finishes reading the request
body. The gateway itself is unaffected.
## Peering ## Peering
Go-ipfs gateways behind a single load balancing reverse proxy should use the Go-ipfs gateways behind a single load balancing reverse proxy should use the
@ -45,38 +50,6 @@ you run out of space, instead of garbage collecting.
This will effectively "garbage collect" without actually running the garbage This will effectively "garbage collect" without actually running the garbage
collector. collector.
# Buffering Requests & Responses
In general, requests to the gateway should be buffered by the reverse proxy for
the best performance. This is usually enabled by default (`proxy_request_buffering`).
## API
The go-ipfs HTTP API (`/api/...`) starts sending a response before it's done
reading the request. This allows it to, e.g., send back progress updates while
adding a file to go-ipfs.
However, these progress updates won't work if the HTTP reverse proxy is
configured to buffer requests. While requests to the go-ipfs _gateway_ should
usually be buffered for better performance, requests to the go-ipfs API should
generally not be buffered.
In NGINX, you can turn off buffering for the API with:
```nginx
server {
...
location /api {
...
proxy_request_buffering off;
proxy_buffering off;
proxy_http_version 1.1;
}
}
```
See: https://github.com/ipfs/go-ipfs/issues/6402#issuecomment-643025868
# Content Blocking # Content Blocking
TODO: TODO: