CouchDB与福克斯顿的一个版本捆绑在一起,该版本有一个严重的错误,如果CouchDB托管在非根位置,则会阻止CouchDB工作。因此,如果您想要在CouchDB上托管/couchdb,那么/couchdb/_utils的捆绑Fauxton将尝试访问根位置/上的CouchDB,而不是location /couchdb,这会导致Fauxton功能崩溃。
GitHub上的下列问题将更详细地解释这个问题:
是否有可能使用Nginx作为反向代理在非根位置将CouchDB与福克斯一起托管,以及如何实现?
发布于 2019-12-16 00:41:55
我一直在一个子文件夹位置使用Nginx后面的Fauxton,配置如下:
location ^~ /mycouch/ {
proxy_pass http://192.168.2.5:5984/;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}有几点需要注意:
proxy_pass http://...5984/;。注意结尾处的/。http://example.com/mycouch/_utils/。注意结尾处的/。Unexpected token < in JSON at position 0错误),请按照这个食谱构建和安装最新版本的福克斯顿。发布于 2019-12-07 19:27:52
对我起作用的方法是让Nginx代理/couchdb/_utils/位置到在Docker容器中运行的独立NPM版本的Fauxton。因此,对/_utils的所有请求都不是由捆绑的CouchDB Fauxton来满足,而是由独立的CouchDB服务器(该服务器有用于子路径托管的相关修补程序)来满足。
这里有一些提示,说明了完成这项工作所需的步骤。
/etc/nginx/conf.d/default.conf上的NGINX配置:
upstream couchdb {
server app-couchdb:5984;
}
upstream fauxton {
server app-fauxton:8000;
}
server {
listen 80;
server_name localhost;
location /couchdb/_utils/ {
rewrite /couchdb/_utils/(.*) /$1 break;
proxy_pass http://fauxton/;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /couchdb {
rewrite /couchdb/(.*) /$1 break;
proxy_pass http://couchdb/;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
...
}CouchDB在/opt/couchdb/etc/local.d/docker-1.ini上的配置:
[chttpd]
bind_address = 0.0.0.0
[httpd]
enable_cors = true
bind_address = 0.0.0.0在fauxton.dockerfile上用于伪造的Dockerfile :阿尔卑斯图:
FROM node:10-alpine
RUN npm install --silent -g fauxton码头配置:
sudo docker build -t fauxton:alpine - < ./fauxton.dockerfile
sudo docker network create app-net
sudo docker create --name app-couchdb --network app-net --restart unless-stopped -v /opt/couchdb/etc/local.d/docker-1.ini:/opt/couchdb/etc/local.d/docker-1.ini -e COUCHDB_USER="$ADMIN_USER" -e COUCHDB_PASSWORD="$ADMIN_PASSWORD" couchdb:latest
sudo docker create --name app-fauxton --network app-net --restart unless-stopped fauxton:alpine fauxton --couchdb "http://app-couchdb:5984"
sudo docker create --name app-nginx --network app-net --restart unless-stopped --publish 8080:80 -v /etc/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf:ro nginx:alpine
sudo docker start app-couchdb
sudo docker start app-fauxton
sudo docker start app-nginx这或多或少为您提供了最新版本的CouchDB和最新版本的独立福克斯顿的安装程序,它们都运行在Docker容器中,并且可以通过http://127.0.0.1:8080/couchdb/_功用/的非根路径访问。
这一解决方案将适用于有以下问题的人:
https://serverfault.com/questions/994736
复制相似问题