gpt4 book ai didi

到 Cloudant 的 NGINX 代理

转载 作者:行者123 更新时间:2023-12-05 00:29:30 27 4
gpt4 key购买 nike

我想使用 proxy_pass 通过运行在我的域上的 NGINX 公开 Cloudant 的一些 couchdb 功能。到目前为止,我已经解决了一些问题(如下所述),但就授权而言,我陷入了困境。有没有人有任何提示?

location /couchdb {
rewrite /couchdb/(.*) /$1 break; #chop off start of this url

proxy_redirect off
proxy_buffering off;
proxy_set_header Host myusername.cloudant.com;
# cannot use $host! must specify my vhost on cloudant

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Authorization "Basic base64-encode(username:password)";

proxy_pass http://myusername.cloudant.com$request_uri;
# must use a variable in this url so that the domain is looked up late.
# otherwise nginx will fail to start about half the time because of resolver issues
# (unknown why though)
}

使用此设置,我可以成功代理到 Cloudant,但我总是收到禁止响应。例如,这个请求:
http://mydomain/couchdb/my-cloudant-db

返回
{"error":"forbidden", "reason":"_reader access is required for this request"}

谢谢你的帮助。

最佳答案

我发现了这个问题。作为第一行的无害的重写规则重写 $request_uri 并更改 $uri 变量作为请求实现的一部分。 $request_uri 不会因重写而改变。因此,当我在 proxy_pass 位置包含该变量时,我没有正确包含删除了/couchdb/的编辑过的 url。

将 proxy_pass 行更改为:

proxy_pass http://myusername.cloudant.com$uri;

现在工作没有问题。这不是 SSL 问题,也不是基本身份验证的问题,也不是其他 http header 问题,也不是 Cloudant 的问题。这都与我将请求转发到的 URI 相关。

关于到 Cloudant 的 NGINX 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17094948/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com