2016-10-14 3 views
1

Remote Server: Ubuntu 14.04 HeadlessZugang CouchDB Fauxton UI von Sub-Domain

Ich habe Setup CouchDB v2.0.0 erfolgreich, und sie aus der Ferne via www zugreifen können [Mydomain] .com:. 5984/_utils

ich möchte eine Sub-Domain erstellen, um diese URL zuzugreifen, so etwas wie dbadmin. [mydomain] .com

Zuerst habe ich eine Sub-Domain von db erstellt. [mydomain] .com (Hier ist die apache2 vHost Config :)

<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> 

Hinweis: Ich habe ersetzt [Mydomain] mit der tatsächlichen Domain; P

Ich habe dann einen A-Datensatz mit meinem DNS-Registrar wie folgt:

db  A  [PublicIP] 

und dann einem SRV Record:

_db._tcp.db SRV  0  5  5984 db.[mydomain].com 

und teste ich es von zu http://db.[mydomain].com/ auf meinem Laptop geht

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

Also ein Erfolg, denke ich. Jetzt erstelle ich die Subdomain dbadmin. Apache2 vhost config:

<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> 

Dann wieder ein A Record:

dbadmin  A  [PublicIP] 

von einem anderen SRV-Datensatz Gefolgt:

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

ich es testen, indem http://dbadmin.[mydomain].com

Ergebnis Besuch: {"error":"unauthorized","reason":"You are not a server admin."}

Ich habe viel zu viele Stunden damit verbracht, den richtigen Weg zu finden. Ich habe alle möglichen Konfigurationen, Einstellungen, DNS-Aufzeichnungen, das Ändern der lokalen.ini der Couch, Proxyeinstellungen versucht ... Sie erhalten die Idee.

Bitte erläutern, wie ich eine Subdomain einfach entweder zum öffentlichen IP + Port + des Servers oder zur Root-Domain + Port + des Servers umleiten kann?

Antwort

1

Ich löste dies mit mod_rewrite in der VHost config:

<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] 

Es scheint, dass ich nicht einmal den SRV-Eintrag müssen haben, auch nicht. Groovy!

Kann mir jemand kurz und bündig erklären, was die Regex für diese Bedingung und Regel eigentlich machen? Ich weiß auf einer grundlegenden Ebene, dass es nach/_utils in der Abfrage sucht, und wenn nicht dort, setzt es dort ...

Die Regel entfernt jedoch die Protokollkennung 'http: //' von Anfang an die URL, die eher nervig ist ... Kann jemand erklären warum und wie man das verhindern kann?