Servidor Proxy

 

Generalidades

Este artículo explica cómo configurar un Servidor Proxy en el panel. Una vez que el proxy está configurado, puedes ejecutar las aplicaciones Node.js y Python en entornos aislados mientras oculta el número de puerto no privilegiado en la URL pública.

Requisitos previos

El servicio solo está disponible en los planes de alojamiento VPS o Servidor Dedicado que ejecutan Nginx o Apache..

También debes crear un usuario SSH para configurar los ejemplos en este artículo.

Detalles Técnicos

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

Puertos

Solo puedes reenviar solicitudes a demonios vinculados a todos los hosts utilizando puertos entre 8000-65535. Aunque los puertos 80 y 443 no se pueden usar, el Servidor Proxy utilizará tu certificado SSL para cifrar todas las conexiones.

Bloquear el firewall y el puerto

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

Daemon

Un daemon es un proceso de servidor que escucha la comunicación de clientes remotos. Los procesos daemon que se vinculan a un puerto (en el cual escuchan las conexiones entrantes) son visibles desde Internet. Los servidores VPS y Dedicados de DreamHost te permiten ejecutar procesos de servidor daemon, pero por favor ten en cuenta que están limitados a los recursos del servidor (CPU/RAM) según el tipo de tu plan.

Activos estáticos

Los activos estáticos (como CSS, imágenes, vídeos, fuentes, y demás) pueden no cargar adecuadamente debido a como está configurado el servidor proxy. Para resolver este inconveniente, crea un subdominio por separado para alojar estos recursos estáticos. Por ejemplo:

  • assets.example.com

Luego, actualiza las referencias a estos activos en el sitio web que configuraste con el servidor proxy para que apunten a su ubicación en el subdominio.

Reglas de .htaccess

Debido a la forma en que está configurado el proxy, es posible que las personalizaciones de .htaccess ya no funcionen (administración de IP, configuración de encabezados, redirecciones, etc.). Si es así, la única opción es usar el software de tu aplicación para recrear estas reglas.

Configurar un Servidor Proxy

Para configurar un Servidor Proxy:

  1. Navega a la página Servidores.
  2. A la derecha de tu servidor VPS, da clic al botón Administrar.
  3. Baja hasta la sección Servidor Proxy.
  4. Ingresa lo siguiente:
    • URL donde configurar el Proxy: Escoge tu dominio del menú desplegable.

      path/to/proxy

      • Directorio principal: Para usar el directorio web principal, deja 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.
  5. Haz clic en el botón Agregar un 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. Inicia sesión en tu servidor a través de SSH.
  2. Instala una versión personalizada de Node.js.
  3. En el directorio de la aplicación (example.com), crea un archivo llamado app.js con el siguiente código. Cambia el número de puerto en la función listen para controlar en qué puerto recibe la aplicación.
    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);
  4. Inicia el servidor node 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 para salir de la sesión SSH mientras continúas ejecutando la aplicación.

  5. Visita el dominio (sin añadir el puerto a la URL) para ver corriendo la aplicación.

Python

Este ejemplo utiliza Gunicorn, un servidor independiente común para aplicaciones Python.

Requisitos previos

Antes de continuar, primero debes instalar una versión personalizada de Python. Esto te permitirá crear un virtualenv e instalar módulos personalizados de Python localmente.

  1. Inicia sesión en tu servidor a través de SSH.
  2. Activa tu virtualenv. Cuando está activo, la primera parte de tu indicador de comando cambia al nombre de tu virtualenv.
  3. Use pip to install Gunicorn:
    (venv)[server]$ pip3 install gunicorn
  4. Luego, crea un archivo Python para correr el sitio. En este ejemplo se llama myapp.py.
    (venv)[server]$ vim myapp.py
  5. 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])
  6. Inicia Gunicorn pasando el número de puerto al siguiente comando.

    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
  7. 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?