Ok, no estaba seguro de cómo redactar el título, pero intentaré explicar mi situación.
Tengo un servidor doméstico que ejecuta Debian que, entre otras cosas, ejecuta un "servidor de medios plex".
Accedo a mi servidor de forma remota usando un subdominio de un dominio que poseo, llamémoslo "midominio.com".Accedo a mi servidor en el subdominio "casa.midominio.com" (que por el momento solo muestra algo de HTML básico) y accedo a la "interfaz web Plex" en "inicio.midominio.com:32400/web".
Lo que quiero hacer es redirigir el subdominio "plex.midominio.com" a "inicio.midominio.com:32400/web" para un acceso más fácil a la "interfaz compleja".
He logrado llegar a la mitad del camino, pero no estoy seguro de cómo proceder o si es realmente posible hacerlo.
Estos son mis servidores virtuales a partir de ahora:
<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>
Lo que me permite acceder a la interfaz compleja en "plex.midominio.com/web", pero todavía quiero deshacerme de "/web" parte.
Entonces, para hacer eso intenté:
ProxyPass / http://localhost:32400/web
ProxyPassReverse / http://localhost:32400/web
Lo cual no funcionó en absoluto, solo aparece mi "404 no encontrado".
Entonces, ¿se puede solucionar esto de la manera que quiero? Y si es así, ¿cómo lo hago?
Cualquier ayuda es muy apreciada.
Respuesta1
Puede deshacerse del contexto web utilizando una regla de reescritura:
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]
Tenga en cuenta las condiciones de reescritura en la segunda sección.
Para su información, obtuve estas configuraciones desde aquí:http://matt.coneybeare.me/how-to-map-plex-media-server-to-your-home-domain/
Deberías comprobarlo para conocer todos los detalles esenciales. De particular interés sería configurar alguna autenticación básica para proteger su host.
Respuesta2
Aquí está la solución modificada:
Agregue una regla DNAT para redirigir todo el tráfico de 80 a 32400.
iptables -t nat -I PREROUTING -p tcp -d X.X.X.X--dport 80 -J DNAT --to-destination X.X.X.X:32400
Entonces quedaría algo como esto:
sudo iptables -t nat -I PREROUTING -p tcp -d 192.168.1.1 --dport 80 -j DNAT --to-destination 192.168.1.1:32400
Recuerde las reglas de su firewall:
iptables -I INPUT -p tcp --dport 32400 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
Y guarde sus reglas de firewall:
service iptables save