首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从子域访问CouchDB Fauxton

从子域访问CouchDB Fauxton
EN

Stack Overflow用户
提问于 2016-10-14 16:41:07
回答 1查看 682关注 0票数 1

远程服务器: Ubuntu 14.04 Headless

我已经成功地设置了Couchdb v2.0.0,并且可以通过www.mydomain.com:5984/_utils远程访问它

我想创建一个子域来访问这个网址,类似于dbadmin.mydomain.com

首先,我创建了db.mydomain.com的一个子域(这里是apache2 vhost配置:)

代码语言:javascript
复制
<VirtualHost *:80>
    ServerName db.[mydomain].com

    ProxyRequests Off
    ProxyPreserveHost On
    ProxyVia Off

    <Proxy *>
        Require all granted
    </Proxy>

    ProxyPass / http://db.[mydomain].com:5984/
    ProxyPassReverse / http://db.[mydomain].com:5984/
</VirtualHost>

注意:我已将mydomain替换为实际的域;P

然后,我使用DNS注册器创建了一个A记录,如下所示:

代码语言:javascript
复制
db     A       [PublicIP]

然后是SRV记录:

代码语言:javascript
复制
_db._tcp.db  SRV     0      5       5984    db.[mydomain].com

我在我的笔记本电脑上通过http://db.[mydomain].com/来测试它

结果:{"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}}

所以我认为这是一次成功。现在,我创建了dbadmin子域。Apache2 vhost配置:

代码语言:javascript
复制
<VirtualHost *:80>
    ServerName dbadmin.[mydomain].com

    ProxyRequests Off
    ProxyPreserveHost On
    ProxyVia Off

    <Proxy *>
        Require all granted
    </Proxy>

    ProxyPass / http://db.[mydomain].com:5984/_utils
    ProxyPassReverse / http://db.[mydomain].com:5984/_utils
</VirtualHost>

然后是另一条A记录:

代码语言:javascript
复制
dbadmin     A       [PublicIP]

后跟另一个SRV记录:

代码语言:javascript
复制
_dbadmin._tcp.dbadmin  SRV     0      5       5984    dbadmin.[mydomain].com

我通过访问http://dbadmin.[mydomain].com来测试它

结果:{"error":"unauthorized","reason":"You are not a server admin."}

我花了太多的时间试图找出做这件事的正确方法。我尝试了各种配置,设置,域名系统记录,更改沙发的local.ini,代理设置…你明白了吧。

请说明如何简单地将子域重定向到服务器的公网IP +端口+路径或服务器的根域+端口+路径?

EN

回答 1

Stack Overflow用户

发布于 2016-10-15 17:05:59

我在VHost配置中用mod_rewrite解决了这个问题:

代码语言:javascript
复制
<VirtualHost *:80>
ServerName dbadmin.[mydomain].com

ProxyRequests Off
ProxyPreserveHost On
ProxyVia Off

<Proxy *>
     Require all granted
</Proxy>

ProxyPass / http://db.[mydomain].com:5984/
ProxyPassReverse / http://db.[mydomain].com:5984/

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/_utils
RewriteRule ^/$ /_utils/$1 [R,L]

看起来我甚至也不需要SRV记录。太棒了!

谁能简明扼要地向我解释一下这个条件和规则的正则表达式到底在做什么?我知道在基本级别上,它在查询中查找/_utils,如果不在那里,它就把它放在那里……

然而,规则确实从URL的开头删除了协议标识符的http://‘,这是相当烦人的……有人能解释为什么,以及如何防止这种情况发生吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40038751

复制
相关文章

相似问题

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