GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo redirijo subdominios a un puerto diferente en el mismo servidor?

Solución 1:

Solución

Esto es lo que finalmente se me ocurrió después de que Miles Erickson me pusiera en la dirección correcta. Quería que la barra de direcciones reflejara el subdominio/dominio original de la solicitud y no el servidor y el puerto redirigidos, pero me puso en el camino correcto para buscar en Google una solución usando VirtualHost y finalmente encontré una solución que incluía el uso de mod_proxy .

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName dev.mydomain.com
    ProxyPreserveHost On

    # setup the proxy
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:8888/
    ProxyPassReverse / http://localhost:8888/
</VirtualHost>

Solución 2:

Ejecute la siguiente línea en la terminal (especifique su dominio y nombre de subdominio correctamente)

sudo nano /etc/apache2/sites-available/subdomain.example.com.conf 

Pegue el siguiente código y cámbielo según sus requisitos

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName subdomain.example.com
        ServerAlias subdomain.example.com
        ProxyRequests Off

        #ProxyPass / http://localhost:8080/
        <Location />
                ProxyPreserveHost On
                ProxyPass http://example.com:8080/
                ProxyPassReverse http://example.com:8080/
        </Location>
     # Uncomment the line below if your site uses SSL.
     #SSLProxyEngine On
</VirtualHost>

Ejecute las siguientes líneas en la terminal (especifique correctamente su dominio y subdominio)

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2ensite subdomain.example.com.conf
sudo service apache2 restart

Solución 3:

Suponiendo que dev.mydomain.com se pueda resolver en la IP de mydomain.com, podría agregar lo siguiente a su httpd.conf:

NameVirtualHost *:80

<VirtualHost *:80>
    ServerName dev.mydomain.com
    redirect / http://mydomain.com:8080/
</VirtualHost>

Documentación relevante de Apache:

  1. Guía para crear hosts virtuales basados ​​en nombres
  2. Núcleo, incluidos VirtualHost y NameVirtualHost
  3. Redireccionar

Pregunta relacionada:Redirección de Apache basada en el nombre de host

(Nota:la versión original de esta respuesta sugirió incorrectamente el uso de RedirectMatch, que, como señaló amablemente @ChrisS, no puede analizar la parte del dominio de la URL).

Solución 4:

Agregue en su configuración principal de vhost las siguientes líneas:

ProxyPreserveHost On
ProxyPass / http://example.com:8080/
ProxyPassReverse / http://example:8080/

Tenga en cuenta que esto requiere mod_proxy en Apache.

Solución 5:

Estás buscando mod_rewrite. Aquí está el enlace a la documentación de Apache que incluye muchos ejemplos de configuraciones básicas y avanzadas.

Y si no puede interpretar la documentación usted mismo, intente agregar esto a httpd.conf:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^dev\.example\.com$ [NC]        
RewriteRule ^(.*)$ http://example.com:8080$1 [R=301]    

Y si ese no es un ejemplo claro, aquí también hay un enlace a una guía para principiantes de mod_rewrite.


Linux
  1. ¿Cómo redirigir http a https usando .htaccess?

  2. ¿Cómo redirigir stderr y stdout a diferentes archivos en la misma línea en el script?

  3. ¿Cómo redirigir la salida de system() a un archivo?

  4. ¿Cómo iniciar el servidor Tomcat en Linux?

  5. ¿Cómo asignar diferentes direcciones IP estáticas a la misma máquina según su sistema operativo?

Cómo detener un servidor de spam

Cómo instalar varios contenedores de discursos en el mismo servidor

Cómo alojar múltiples sitios de WordPress en el mismo servidor con Docker

Cómo cambiar el nombre de host del servidor en Ubuntu

Cómo cambiar el puerto SSH en CentOS

¿Cómo cambiar la zona horaria en Ubuntu 18.04 Server?