Servidor Proxy

Generalidades

DreamHost ofrece un Servidor Proxy que puedes usar para configurar una aplicación para que corra en un puerto no privilegiado sin vincular el número de puerto a la URL. Este servicio está disponible en los planes de alojamiento VPS o un Servidor Dedicado que se ejecuten en Nginx o Apache.

Este artículo explica como el Servidor Proxy de DreamHost está configurado y ejemplos de cómo crear un servidor independiente para aplicaciones de Node.js y Python.

Detalles Técnicos

El Servidor Proxy de DreamHost es un proxy revertido usando mod_proxy de Apache. 

Puertos

Solo puedes redirigir solicitudes a daemons vinculados a todos los hosts usando puertos entre 8000-65535.

Los puertos 80 y 443 no se pueden usar, sin embargo, el Servidor Proxy usará tu certificado SSL para encriptar todas las conexiones.

DreamHost no emplea ningún tipo de firewall o bloqueo de puertos en su red.

Daemon

Un proceso daemon es un proceso de servidor que recibe la comunicación de clientes remotos. Los procesos daemon que se vinculan a un puerto (en el cual recibe conexiones entrantes) son visibles desde Internet.

Los servidores VPS y Dedicados de DreamHost te permiten ejecutar procesos de servidor daemon, pero ten en cuenta que están limitados a los recursos del servidor (CPU/RAM) de tu tipo de plan.

Configurar un Servidor Proxy

Para configurar un Servidor Proxy:

  1. Navega a la página Proxy.
    ES proxy domain
  2. Ingresa lo siguiente:
    • URL donde configurar el Proxy: Escoge tu dominio del menú desplegable.

      url/to/proxy/

      • Directorio principal: Para usar el directorio web principal, debes dejar este campo en blanco.
      • Subdirectorio: Para usar un subdirectorio, escribe su nombre.
    • Número de puerto para hacer Proxy: Ingresa el número de puerto que configuraste para tu aplicación.
  3. Haz clic en el botón Agregar un Servidor Proxy....

Ejemplos de servidores independientes

Los siguientes ejemplos de Node.js y Python muestran cómo crear un servidor simple para ejecutarse en el puerto #8002 para que puedas hacer proxy.

Node.js

  1. Instala una versión personalizada de Node.js.
  2. En el directorio de la aplicación (example.com), crea un archivo llamado app.js con el siguiente código:
    var http = require("http");
    
    var server = http.createServer(function (request, response) {
      response.writeHead(200, {"Content-Type": "text/plain"});
      response.end("Hello World From Node");
    }).listen(8002);

    La función listen le indica a Node en qué puerto debe recibir la aplicación.

  3. Inicia el servidor node predeterminado ejecutando el archivo app.js.
    [server]$ node app.js

    Esto carga el archivo app.js solo mientras tu sesión SSH actual esté activa. También puedes usar un administrador de procesos como PM2 que te permitirá salir de la sesión SSH mientras continúas ejecutando la aplicación.

  4. Visita el dominio (sin añadir el puerto a la URL) y verás la aplicación en funcionamiento.

Python

Un servidor independiente comúnmente utilizado para aplicaciones Python es Gunicorn, inspirado en el servidor Unicorn de Ruby.

Primero debes instalar una versión personalizada de Python. Esto te permite crear un entorno virtual y instalar módulos de Python personalizados localmente.

  1. Asegúrate de tener activado tu entorno virtual. La primera parte de tu línea de comandos cambia al nombre de tu entorno virtual.
  2. Luego puedes usar pip para instalar Gunicorn.
    (venv)[server]$ pip3 install gunicorn
  3. Luego, crea un archivo Python para correr el sitio. En este ejemplo se llama myapp.py.
    (venv)[server]$ vim myapp.py
  4. Agrega el siguiente código al archivo.
    def app(environ, start_response):
      data = b"Hello, World From Gunicorn!"
      start_response("200 OK", [
          ("Content-Type", "text/plain"),
          ("Content-Length", str(len(data)))
                               ])
      return iter([data])
  5. Inicia Gunicorn pasando el número de puerto al comando.
    Asegúrate de cambiar example.com al nombre de tu dominio.

    Agregar --log-level=debug proporciona información útil si ocurre un error. Luego puedes compartir esta información al contactar a soporte para ayudar a identificar el problema.

    (venv)[server]$ GUNICORN_CMD_ARGS="--bind=example.com:8002" gunicorn myapp:app --log-level=debug
  6. Visita el dominio y verás 'Hello, World From Gunicorn!'.

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?