nginx 代理 couchdb 的 HTTP 位置错误:标头

nginx 代理 couchdb 的 HTTP 位置错误:标头

我使用 nginx 作为 CouchDB 的反向代理。我想为代理使用前缀,例如http://[ip]:8080/proxy/testdb-> http://localhost:5984/testdb。我在 HTTP 响应中收到Location:标头,这导致我的 HTTP 客户端重定向和中断。我该如何修复我的 nginx 配置?

我的 nginx 服务器块如下所示:

server {
  listen 8080;
  root /var/www/proxy;
  index index.php index.html index.htm;
  location /proxy {
    rewrite /proxy/(.*) /$1 break;
    proxy_pass http://127.0.0.1:5984;
    proxy_redirect off;
#    proxy_set_header Host $host;
#    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

HTTP 响应示例:

HTTP/1.1 201 Created
Server: nginx/1.6.2
Date: Tue, 13 Jan 2015 01:09:00 GMT
Content-Type: text/plain; charset=utf-8
Content-Length: 74
Connection: close
Location: http://192.168.0.100/testdb/2134922387
ETag: "1-f355543f12ede9fdc421b4c3ca06c1eb"
Cache-Control: must-revalidate

基于此,HTTP 客户端尝试重定向到http://192.168.0.100/testdb/2134922387,从而导致 404 错误。(取消注释两行注释的配置行似乎没有任何改变)。

生成这些标题的示例命令:

curl -v -X POST -H "Content-Type: application/json" -d "{\"_id\":\"2134922387\",\"test\":\"good\"}" http://192.198.0.100:8080/proxy/testdb

关于如何解决此Location:问题有什么想法吗?

编辑以添加:看起来更改为proxy_redirectproxy_redirect http://$host/ /proxy/;帮助。

相关内容