Guillermo Garron

Suscribete: rss | email

Categorias

Diferentes aplicaciones mismo dominio

Escrito por:
Fecha: 2015-04-12 17:35:00 00:00

¿Cómo servir múltiples aplicaciones desde un mismo dominio?

Existen ocaciones en que se desea servir desde un mismo dominio multiples aplicaciones, y presentarlas como si fueran sub directorios, cuando en realidad son aplicaciones completamente independientes que pueden o no estar corriendo en el mismo servidor.

Vamos a suponer que queremos servir una página estática en el raíz, Wordpress en el directorio /wordpress/ y ZenPhoto en el directorio /zenphoto/, incluso vamos a tener un foro en /forum/ controlado por Discourse.

Instalando las aplicaciones

No vamos a cubrir el como se instalan las aplicaciones, ya que existe suficiente información sobre como hacerlo, pero vamos a suponer que cada una de ellas esta funcionando en su propio servidor, pero bien podría ser en el mismo servidor en distintos directorios, o containers de Docker.

Usando Nginx como proxy reverso, para enrutar el tráfico a la aplicación que corresponda

Para poder lograr nuestro cometido vamos a tener Nginx en su propio servidor (puedes ponerlo en el mismo que alguna de las aplicaciones, o en el mismo de todas y decides poner todo junto)

El escenario que tendremos es este:

  • 192.168.1.1, Nginx en el puerto 80
  • 192.168.1.2, Wordpress en el puerto 8080
  • 192.168.1.3, ZenPhoto en el puerto 8080
  • 192.168.1.4, Discourse en el puerto 8080

Instala Nginx

sudo apt-get install nginx

Cuando este instalado, lo configuramos de la siguiente manera:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name www.example.com;

    location / {
        try_files $uri $uri/ =404;
    }

    location /wordpress/ {
       proxy_set_header X-Real-IP  $remote_addr;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_set_header Host $host;
       proxy_pass http://192.168.1.2:8080;
       }

    location /photoblog/ {
       proxy_set_header X-Real-IP  $remote_addr;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_set_header Host $host;
       proxy_pass http://192.168.1.3:8080;
    }

       location /forum/ {
       proxy_set_header X-Real-IP  $remote_addr;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_set_header Host $host;
       proxy_pass http://192.168.1.4:8080;
       }
}

Como se puede ver, Nginx va a direccionar cada directorio al servidor correspondiente y presentara la información al usuario final, quien verá como si todo estuviera siendo servido por la misma aplicación, claro esta que tienes otras consideraciones, como ser:

  • Unificar bases de datos si quieres que ingresen con usuario y password
  • Unificar los temas y apariencias de los sitios para hacer la experiencia más agradable al usuario

Espero y le sea de utilidad a alguien, yo lo utilice en algún momento, para llevar un photoblog en el directorio /photoblog/ de mi sitio principal que son páginas estáticas generadas por Jekyll, mientras que el photoblog era Wordpress, para poder subir fotos desde mi celular directo al sitio.


permalink


Si te gusto el artículo, por favor compartelo