首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Nginx作为反向代理在非根位置托管CouchDB

如何使用Nginx作为反向代理在非根位置托管CouchDB
EN

Server Fault用户
提问于 2019-12-07 19:26:44
回答 2查看 760关注 0票数 3

CouchDB与福克斯顿的一个版本捆绑在一起,该版本有一个严重的错误,如果CouchDB托管在非根位置,则会阻止CouchDB工作。因此,如果您想要在CouchDB上托管/couchdb,那么/couchdb/_utils的捆绑Fauxton将尝试访问根位置/上的CouchDB,而不是location /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作为反向代理在非根位置将CouchDB与福克斯一起托管,以及如何实现?

EN

回答 2

Server Fault用户

回答已采纳

发布于 2019-12-16 00:41:55

我一直在一个子文件夹位置使用Nginx后面的Fauxton,配置如下:

代码语言:javascript
复制
    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;
    }

有几点需要注意:

  1. 我是proxy_pass http://...5984/;。注意结尾处的/
  2. 您应该键入http://example.com/mycouch/_utils/。注意结尾处的/
  3. 福克斯顿自身有一个问题(Unexpected token < in JSON at position 0错误),请按照这个食谱构建和安装最新版本的福克斯顿。
票数 2
EN

Server Fault用户

发布于 2019-12-07 19:27:52

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

这里有一些提示,说明了完成这项工作所需的步骤。

/etc/nginx/conf.d/default.conf上的NGINX配置:

代码语言:javascript
复制
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上的配置:

代码语言:javascript
复制
[chttpd]
bind_address = 0.0.0.0

[httpd]
enable_cors = true
bind_address = 0.0.0.0

fauxton.dockerfile上用于伪造的Dockerfile :阿尔卑斯图:

代码语言:javascript
复制
FROM node:10-alpine
RUN npm install --silent -g fauxton

码头配置:

代码语言:javascript
复制
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/_功用/的非根路径访问。

这一解决方案将适用于有以下问题的人:

  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
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/994736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档