使用CouchDB数据库进行Web应用程序设置让我很头疼。问题似乎是,文档ID包含特殊字符" /"," - "或空格。这是一个示例URL(编码)
http://127.0.0.1:5984/procedures/1%2F1%2F1143%2F1%2Fschwer%2F1%2F0.0%2F1.3
CouchDB配置了nginx作为反向代理,所以 http://127.0.0.1:5984/可在以下网址获得 https://example.com/db
现在的问题是,当使用标准程序时,nginx似乎在重写期间对URL进行解码,但之后不再对其进行编码。
我们在nginx中提出了以下位置设置来克服这个问题:
location /db {
set $modified_uri $request_uri;
if ($modified_uri ~ "^(.{3})(.*)") {
set $modified_uri $2;
}
proxy_pass http://127.0.0.1:5984$modified_uri;
}
然而现在,斜线" /"用'%252F'编码而不是'%2F'。 有没有人知道如何解决这个问题?非常感谢!
答案 0 :(得分:0)
使用正则表达式捕获uri,然后设置指令以保持编码完整。
location ~ ^/db(.*)$ {
set $query $1;
proxy_pass http://127.0.0.1:5984$query;
}