cómo lograr un alias de apache con un pase de proxy en el mismo dominio

2 minutos de lectura

Tenemos un sitio NodeJS ejecutándose con un Apache VirtualHost que se ve así:

<VirtualHost *:80>
    ServerName      domain.org
    ServerAlias www.domain.org

    ProxyPass / http://localhost:8884/
    ProxyPassReverse / http://localhost:8884/

    ProxyPreserveHost on

    LogLevel debug
</VirtualHost>

Esto funciona bien.

sin embargo, ahora tenemos la tarea de instalar un blog de wordpress como un alias del dominio

www.dominio.org/blog

Para hacer esto, intentamos configurar un host virtual con un alias como este:

<VirtualHost *:80>
       Alias /blog /var/apache-vhosts/www.domain.org-blog

       <Directory /var/apache-vhosts/www.domain.org-blog/>
           Options Indexes FollowSymLinks MultiViews
           AllowOverride All
           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>

Tenemos habilitado el módulo apache mod_alias pero simplemente no lo detecta.

¿Alguien más ha logrado esto?

También intenté incluir el alias sin una etiqueta de envoltorio vhost, pero aún no me gustó :/

  • si tiene habilitados ambos hosts virtuales, siempre se usará el primero -> y, por lo tanto, nunca podrá acceder al alias /blog. Si desea el proxy y el alias en el mismo dominio, deberá tener ambos en el mismo virtualhost

    – wodka

    19 de marzo de 2016 a las 14:18


  • ¿Hay alguna manera de lograr esto entonces?

    usuario1037355

    19 de marzo de 2016 a las 14:19

  • No tengo permitido establecer la etiqueta “apache” como principal. ¿Puede alguien ayudarme?

    –Valerio Bozz

    17 de enero a las 9:22

avatar de usuario
wodka

Tenga en cuenta que ProxyPass tiene precedencia sobre Alias.

Para arreglar, declarar otro ProxyPass señalando un signo de exclamación (!).

Por ejemplo:

<VirtualHost *:80>
    ServerName      domain.org
    ServerAlias www.domain.org
   
    # the next line is your fix
    ProxyPass /blog !
    Alias     /blog /var/apache-vhosts/www.domain.org-blog

    <Directory /var/apache-vhosts/www.domain.org-blog/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        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


    ProxyPass        / http://localhost:8884/
    ProxyPassReverse / http://localhost:8884/
    ProxyPreserveHost on
    LogLevel debug
</VirtualHost>

Puedes encontrar más información en el oficial ProxyPass documentación:

Los ! La directiva es útil en situaciones en las que no desea utilizar un proxy inverso en un subdirectorio: https://httpd.apache.org/docs/2.4/mod/mod_proxy.html

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad