Dies ist die archivierte Version des Blogs vom 05.01.2017. Aktuelle Beiträge findest du unter thomas-leister.de
 

Meine TVHeadend Instanz Zuhause sollte über das Internet erreichbar werden. Hinter dem DSL Router ist ein Webserver erreichbar, den ich dafür als Proxy zu meinem TVHeadend-Server nutzen will. Über den Webserver laufen allerdings noch ein paar andere Dienste, sodass ich TVH nicht das Rootverzeichnis überlassen will. Das THV Webinterface soll stattdessen über ein Unterverzeichnis „/tv/recorder“ erreichbar sein, also z.B. so: https://server.tld/tv/recorder.

TVHeadend läuft auf dem Server mit der IP 192.168.2.111 auf Port 9981. Die Konfiguration von Nginx kann z.B. so aussehen:

server {
    server_name server.tld;
    
    listen 80 default_server;
    listen [::]:80 default_server;
    
    root /var/www;
    
    [ ... ]
    
    location /tv/recorder {
        access_log off;
        proxy_pass http://192.168.2.111:9981/;
    }
}

Von wesentlicher Bedeutung ist hier eigentlich nur der location Block, der /tv/recorder behandelt. Besonders wichtig ist der Abschließende Trailing-Slash hinter der Zieladresse mit dem Ziel-Port! Ohne den Slash kann TVHeadend die Anfrage nicht verarbeiten, weil die angeftagte Adresse für die Software dann so aussieht: /tv/recorder/extjs.html. Dieser Pfad existiert für TVH nicht. Durch den Trailing-Slash wird der Unterverzeichnis-Pfad für TVH entfernt, sodass es die Anfrage verarbeiten kann.

Wenn das TVHeadend Webinterface über das Internet erreichbar ist, empfehle ich, eine HTTP Base Auth gleich mit einzurichten: Nginx: HTTP Base Auth einrichten


Post published on 7. Juni 2015 | Last updated on 7. Juni 2015
Tags:               

Diesen Blog unterstützen

Wenn Dir der Beitrag gefallen hat, freue ich mich über einen kleinen Obolus :-) Bitcoin QR Code

PayPal-Seite: https://www.paypal.me/ThomasLeister
Meine Bitcoin-Adresse: 15z8 QkNi dHsx q9WW d8nx W9XU hsdf Qe5B 4s

Siehe auch: Unterstützung

Informationen zum Autor

Thomas Leister

Geb. 1995, Kurzhaar-Metaller, Geek und Blogger. Nutzt seit Anfang 2013 ausschließlich Linux auf Desktop und Servern. Student der Automobilinformatik an der Hochschule für angewandte Wissenschaften in Landshut.

5 thoughts on “Nginx Proxy für TVHeadend mit Unterverzeichnis

  • Hi,

    sehr schöne Anleitung. Weißt Du auch, wie das mit lighttpd geht? Leider läuft bei mir schon alles über lighty und ich will ungern auf NGINX umsteigen. Die sonst funktionierenden Proxy Befehle erzeugen dort nämlich einen 500 Internal Server Error.

    VG

    Christian

  • Hi,

    bei mir hat das leider so nicht geklappt, aber nach ein wenig recherche habe ich es hinbekommen.
    Ich muss hinter „location /tv/recorder“ noch einen Slash machen und in den Block „proxy_set_header Host $host;“ einfügen.

    Lg
    Philipp

    • Hi Philipp,

      danke für deinen Hinweis. Den zusätzlichen Slash brauche ich bei mir offenbar nicht. Liegt wohl mit an der Config auf dem Ziel-Host. Auch auf das proxy_set_header“ kann ich bei mir verzichten, weil der Zielhost nur einen virtual Host hat – und der ist default.

      Aber gut, dass du das hier für andere User erwähnst :)

      LG Thomas

  • Ich habe ebenfalls einen Nginx als Proxy für diverse Dienste im Einsatz.
    Da ich allerdings meine DynDns addresse als CNAME bei Strato für alle möglichen Subdomains hinterlegen kann, nutze ich lieber eine seperate Subdomain, als ein Unterverzeichnis.
    (Das ist zumindest der einzige Anbieter der relativ leicht Dyndns für eine TLD anbietet)
    So kann ich dann natürlich auch ein LetsEncrypt Zertifikat hinterlegen und HSTS nutzen.

    Kann man nun der TVHeadend Android App beibringen, auf Port 443 zu lauschen?
    Wäre natürlich ganz nett, aus der Ferne drauf zuzugreifen (entsprechender Upload vorrausgesetzt)

    Neben der SSL Konfiguration helfen folgende Parameter, herrauszufinden, welche IP nun der Client hat (möchte man sich am TVHeadend Server anmelden und nicht via Nginx)

    proxy_buffering off;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    Ansonsten kann es natürlich dazu führen, dass der Nginx server (also ggf. localhost oder ein anderer Client im lokalen Netz) als Quelle angegeben wird, dann wäre der Zugang zu TVHeadend unter Umständen nicht mehr verschlüsselt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.