Apache Proxypass leitet Subdomain auf Port und Pfad um

Apache Proxypass leitet Subdomain auf Port und Pfad um

OK, ich war nicht sicher, wie ich den Titel formulieren sollte, aber ich werde versuchen, meine Situation zu erklären.

Ich habe einen Heimserver mit Debian, auf dem unter anderem „Plex Media Server“ läuft.

Ich greife remote auf meinen Server zu, indem ich eine Subdomain einer Domain verwende, die mir gehört. Nennen wir sie "meinedomain.com". Ich greife auf meinen Server über die Subdomain zu "home.meinedomain.com" (das im Moment nur einige grundlegende HTML-Dateien anzeigt) und ich greife auf die "Plex-Weboberfläche" über "home.meinedomain.com:32400/web".

Was ich tun möchte, ist die Umleitung der Subdomain "plex.meinedomain.com" Zu "home.meinedomain.com:32400/web" für einen einfacheren Zugriff auf die "Plex-Schnittstelle".


Ich habe es bis zur Hälfte geschafft, bin mir aber nicht sicher, wie ich weiter vorgehen soll oder ob dies überhaupt möglich ist.

Dies sind derzeit meine virtuellen Hosts:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName home.mydomain.com

    DocumentRoot /var/www/home.mydomain.com/public_html

    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerName plex.mydomain.com
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://localhost:32400/
    ProxyPassReverse / http://localhost:32400/
</VirtualHost>

Damit kann ich auf die Plex-Schnittstelle zugreifen unter "plex.meinedomain.com/web", aber ich möchte trotzdem das " loswerden/Netz" Teil.

Um das zu tun, habe ich Folgendes versucht:

ProxyPass / http://localhost:32400/web
ProxyPassReverse / http://localhost:32400/web

Das hat überhaupt nicht funktioniert, es gibt nur die Meldung „404 Nicht gefunden“.


Kann das also so gelöst werden, wie ich es möchte? Und wenn ja, wie mache ich das?

Jede Hilfe wird sehr geschätzt.

Antwort1

Sie können den Webkontext mithilfe einer Umschreibregel entfernen:

ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:32400/
ProxyPassReverse / http://127.0.0.1:32400/

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/web
RewriteCond %{HTTP:X-Plex-Device} ^$
RewriteRule ^/$ /web/$1 [R,L]

Beachten Sie die Umschreibbedingungen im zweiten Abschnitt.

Zu Ihrer Information, ich habe diese Einstellungen von hier:http://matt.coneybeare.me/wie-man-plex-media-server-auf-ihre-Heimdomain-zuordnet/

Sie sollten sich das ansehen, um alle Einzelheiten zu erfahren. Besonders wichtig ist die Einrichtung einer grundlegenden Authentifizierung zum Schutz Ihres Hosts.

Antwort2

Hier ist die geänderte Lösung:

Fügen Sie eine DNAT-Regel hinzu, um den gesamten Datenverkehr von 80 auf 32400 umzuleiten.

iptables -t nat -I PREROUTING -p tcp -d X.X.X.X--dport 80 -J DNAT --to-destination X.X.X.X:32400

Es würde also ungefähr so ​​aussehen:

sudo iptables -t nat -I PREROUTING -p tcp -d 192.168.1.1 --dport 80 -j DNAT --to-destination 192.168.1.1:32400

Denken Sie an Ihre Firewall-Regeln:

    iptables -I INPUT -p tcp --dport 32400 -j ACCEPT
    iptables -I INPUT -p tcp --dport 80 -j ACCEPT

Und speichern Sie Ihre Firewall-Regeln:

    service iptables save

verwandte Informationen