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