【问题标题】:Access CouchDB Fauxton UI from subdomain从子域访问 CouchDB Fauxton UI
【发布时间】:2016-10-14 08:41:07
【问题描述】:

远程服务器:Ubuntu 14.04 Headless

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

我想创建一个子域来访问这个 URL,比如 dbadmin.[mydomain].com

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

<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 记录,如下所示:

db     A       [PublicIP]

然后是 SRV 记录:

_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 虚拟主机配置:

<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记录:

dbadmin     A       [PublicIP]

后跟另一个 SRV 记录:

_dbadmin._tcp.dbadmin  SRV     0      5       5984    dbadmin.[mydomain].com

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

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

我花了太多时间试图找出正确的方法。我尝试了各种配置、设置、DNS 记录、更改沙发的 local.ini、代理设置……你明白了。

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

【问题讨论】:

    标签: apache redirect proxy dns couchdb


    【解决方案1】:

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

    <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://”,这很烦人……谁能解释为什么,以及如何防止这种情况发生?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2011-03-25
      • 2013-07-04
      • 2011-09-10
      • 1970-01-01
      相关资源
      最近更新 更多