我正在尝试设置一个 CouchDB 部署,该部署需要能够返回 gzip 响应(12mb 未压缩响应与 400kb 压缩响应)。我还需要 SSL 支持和 CORS。
我之前曾使用 Apache 作为反向代理,但我发现它对于连接不良的大型复制来说并不可靠。我的偏好是直接为 CouchDB 提供服务,无需任何代理,并且我们目前正在 CouchDB 内提供 SSL。
我已经成功设置了这个代理:http://broken-by.me/tag/accept-encoding-gzip/,它使用节点和连接模块(加上cors和压缩)。它非常简单并且运行良好。然后,每当我需要 gzip 响应时,我只需将请求发送到不同的端口。但这意味着我会失去这些请求的 SSL。我应该弄清楚如何将 SSL 添加到节点吗?还是人们在一切前面都推荐ngingx作为代理,然后使用nginx来做gzip、cors和ssl?生产 CouchDB 部署的最佳实践是什么?
使用反向代理。
为了便于说明,请安装 nginx 并在开发盒上的端口 8080 和端口 5984 上设置反向代理。
此代理配置将帮助您入门
server {
listen 8080;
gzip_min_length 1000;
gzip_buffers 4 8k;
gzip_http_version 1.0;
gzip_types application/json;
gzip_vary on;
gzip on;
gzip_proxied any;
location / {
proxy_pass http://127.0.0.1:5984;
}
Run Code Online (Sandbox Code Playgroud)
使用curl来验证超过大约1000b的响应是否被压缩,例如
curl -D -G -H "Accept-Encoding: gzip" http://user:pass@127.0.0.1:8080/mydb/_all_docs > out.gz
Run Code Online (Sandbox Code Playgroud)
响应将被压缩。使用 _all_docs 等端点来确保响应具有超过 1000b 的响应数据,以进行确认。
CouchDB 脱离 Web 服务器轨道已经有一段时间了,例如列表和显示函数的弃用就证明了这一点。CouchDB 不是 Web 服务器,关注点分离很重要。
| 归档时间: |
|
| 查看次数: |
610 次 |
| 最近记录: |