2016-10-14 85 views
1

遠程服務器:Ubuntu的14.04無頭訪問CouchDB的Fauxton UI從子域

我設置的CouchDB V2.0.0成功,並且可以通過WWW遠程訪問它[MYDOMAIN網站] .com:5984/_utils

我想創建一個子域訪問此網址,像dbadmin。[MYDOMAIN] .com上

首先,我創建數據庫的一個子域。[MYDOMAIN] .com上(這裏是Apache2的虛擬主機配置:)

<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

我然後創建的A記錄與我的DNS註冊,如下所示:

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> 

然後又實錄:

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 +端口+路徑或服務器的根域+端口+路徑?

回答

1

我與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記錄,無論是。 Groovy的!

任何人都可以簡潔地向我解釋這個條件和規則的正則表達式實際上在做什麼?我知道在基本層面上它在查詢中查找/ _utils,如果不在那裏,它會將它放在那裏...

然而,該規則並沒有從協議的開頭刪除協議標識符「http://」網址,這是相當惱人的......任何人都可以解釋爲什麼,以及如何防止這種情況發生?