如何使用Nginx作为反向代理在非根目录上使用Fauxton托管CouchDB

问题描述 投票:0回答:1

CouchDB与Fauxton捆绑在一起,该版本具有一个严重的错误,如果CouchDB托管在非根目录位置,则该错误会阻止Fauxton正常工作。因此,如果要将CouchDB托管在/couchdb,则捆绑的Fauxton会在/couchdb/_utils尝试访问根目录/而不是位置/couchdb的CouchDB,从而导致Fauxton功能中断。

此问题由GitHub上的以下问题进行了详细说明:

  1. https://github.com/apache/couchdb-fauxton/issues/1199
  2. https://github.com/apache/couchdb-fauxton/issues/944
  3. https://github.com/apache/couchdb-fauxton/issues/1188

是否有可能使用Nginx作为反向代理在非根目录下将Fouchton托管在Fouchton上,如何实现?

nginx couchdb fauxton
1个回答
0
投票

对我有用的方法是让Nginx将/couchdb/_utils/位置代理到运行在Docker容器中的独立NPM版本的Fauxton。因此,捆绑的CouchDB Fauxton不满足对/_utils的所有请求,而是独立的Fauxton服务器(具有有关子路径托管的相关修补程序)无法满足。

以下是完成这项工作所需步骤的一些提示。

[/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;
  }
  ...
}

/opt/couchdb/etc/local.d/docker-1.ini处的CouchDB配置:

[chttpd]
bind_address = 0.0.0.0

[httpd]
enable_cors = true
bind_address = 0.0.0.0

[fauxton:alpine图像的Dockerfile,位于fauxton.dockerfile

FROM node:10-alpine
RUN npm install --silent -g fauxton

Docker配置:

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和最新版本的独立Fauxton的设置,它们都在Docker容器中运行,并且可以通过http://127.0.0.1:8080/couchdb/_utils/处的非根路径进行访问。

此解决方案适用于遇到以下问题的人:

  1. https://github.com/apache/couchdb-fauxton/issues/1199
  2. https://github.com/apache/couchdb-fauxton/issues/944
  3. https://github.com/apache/couchdb-fauxton/issues/1188
© www.soinside.com 2019 - 2024. All rights reserved.