Apache proxypass redirige el subdominio al puerto y la ruta

Apache proxypass redirige el subdominio al puerto y la ruta

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

información relacionada