couchdb auf port 80

22 Aug

Letztendlich soll ein Couchapp natürlich auch über eine einfache URL ansprechbar sein. Wie man das erreicht erklärt Max Ogden anschaulich in diesem Video bzw. hier in Textform. Der entscheidende Unterschied wenn später port 80 verwendet werden soll, ist das man nicht port 5984  als Ausgangspunkt angibt sondern gar keinen port. Also in der local.ini:

[vhosts]
twappleryzer.cs.upb.de = /twapperlyzer/_design/twapperlyzer/_rewrite

statt :
[vhosts]
twappleryzer.cs.upb.de:5984 = /twapperlyzer/_design/twapperlyzer/_rewrite

Bleibt also nur noch die Port Nummer. Im Prinzip gibt es da drei Möglichkeiten:

  1. In der local.ini Port 80 eintragen und CouchDB als root starten.
  2. Den Port wie mit iptables von 80 auf 5984 umbiegen.
  3. Einen in einem hhtp Server einen virtual host anlegen und da die Adresse umbiegen.

Punkt eins hat den Nachteil, dass man etwas an Sicherheit verliert wenn man CouchDB mit root Rechten ausführt.

Punkt zwei hat den Nachteil das zumindest unter Ubuntu die Port Umleitung local nicht funktioniert, ohne sich einen eignen Kernel zu kompilieren, da die Kernel Option  CONFIG_IP_NF_NAT_LOCAL=y nicht gesetzt ist (sieht man mit less /boot/config-$(uname -r) ). Das ganz ist hier gut erklärt. Trotzdem hier die Anleitung:

Vorweg noch mit  iptables -t nat -L -n -v listet man sich die Regen auf, mit:
iptables -F
iptables -t nat -F #Ist hier wichtig
iptables -t mangle -F
iptables -X
löscht man sämtliche Regeln.  Mit
iptables -t nat -I PREROUTING --src 0/0 --dst 0/0 -p tcp --dport 80 -j REDIRECT --to-ports 5984
fügt man eine Regel hinzu die allen nicht lokalen Verkehr von port 80 auf port 5984 umleitet.

Punkt drei ist eigentlich auch nicht ideal weil ein zusätzliches Programm gestartet werden muss. Entweder man verwendet einen externen http Server wie nginx (hier erklärt) oder node.js mit dem http-proxy Modul und diesem 2 Zeiler:

var httpProxy = require('http-proxy');
httpProxy.createServer(5984, 'localhost').listen(80);

Für Heimeinsatz werde ich wohl nginx verwenden. Für den Server in der Uni rechne ich nicht mit lokalem Verkehr, so dass die iptables Lösung am sinnigsten scheint.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: