# Web

Desde esta sección podremos configurar virtual hosts en el [servidor HTTP](https://doc.velneo.com/velneo-vserver/servicio-https) de Velneo vServer.

La barra de herramientas de esta sección de Velneo vAdmin incluye los siguientes botones:

![](https://content.gitbook.com/content/3LV49PQOXXZc5eok6Vpo/blobs/Y27dGPb4Iif7Mp52FERt/image.png) **Iniciar servidor HTTP**: inicia el servicio HTTP del el servidor. Al arrancar nos informará sobre el host o hosts que se han iniciado. Ejemplo:

> Servidor HTTP iniciado en los siguientes hosts: 8080 ssl, 8081 misitio.com, 8082 ssl

![](https://content.gitbook.com/content/3LV49PQOXXZc5eok6Vpo/blobs/T3NIGFgQPRjUec0iPWma/image.png) **Detener servidor HTTP**: detiene el servicio HTTP del servidor y nos informará sobre el estado de la operación.&#x20;

* Esta acción no detiene la escucha en el puerto de acceso a los módulos Web de vAdmin y vDataClient.
* Esta acción detiene el acceso a Instancias pero sí permite el acceso a los ficheros estáticos.

![](https://1800796780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3LV49PQOXXZc5eok6Vpo%2Fuploads%2FVgJSdwnnSfLKRamJvsph%2Fimage.png?alt=media\&token=94e7aecd-a85c-4295-b08e-847c2822e0cb) **Nuevo virtual host**: permite crear y configurar un nuevo host virtual en el vServer.

![](https://content.gitbook.com/content/3LV49PQOXXZc5eok6Vpo/blobs/tRA0rXum2MOOkgkvvEnp/image.png) **Eliminar virtual host**: permite borrar un host virtual.

![](https://1800796780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3LV49PQOXXZc5eok6Vpo%2Fuploads%2FiW8augYwUFw8q2eYQy9j%2Fimage.png?alt=media\&token=4a709b4a-570e-40db-90d3-7ba7f061b7c2) **Refrescar**: refresca la lista de host virtuales del servidor.

La configuración se guarda en dos archivos del [directorio de configuración del servidor](https://doc.velneo.com/velneo-vserver/instalacion-y-configuracion/estructura-de-directorios#ficheros-de-configuracion), en la carpeta `Velneo\httpserver`:

* `httpserver.vsi`: es un archivo binario, utilizado para una carga más rápida.
* `httpserver.json`: es un archivo de configuración en formato JSON, legible y editable.

El servidor (`vServer`) tiene una lógica específica para garantizar la mejor experiencia de carga y para mantener la coherencia de la configuración.

El servidor intenta cargar la configuración de la forma más eficiente posible, priorizando el archivo binario.

**1. Carga por Defecto (Desde el Binario)**

Este es el escenario de carga habitual, que optimiza el rendimiento.

* Al solicitarse la carga de la configuración, y el archivo binario `httpserver.vsi` existe, la configuración se carga directamente desde el archivo binario.
* Si ocurre algún error durante esta carga, el mensaje correspondiente se mostrará en el panel de mensajes de vAdmin.

**2. Carga de Respaldo (Desde JSON y Regeneración Binaria)**

Este escenario se ejecuta cuando no existe el fichero binario.

* Al solicitarse la carga de la configuración, y el archivo binario `httpserver.vsi` no existe, la configuración se carga desde el archivo JSON (`httpserver.json`).
* Inmediatamente después de la carga exitosa, el servidor genera y guarda una nueva versión del archivo binario (`httpserver.vsi`).
* Si ocurre algún error durante esta carga, el mensaje correspondiente se mostrará en el panel de mensajes de vAdmin.

{% hint style="info" %}
Si necesitamos que `vServer` cargue la configuración desde el archivo JSON de forma intencionada (por ejemplo, tras editarlo manualmente o después de una migración), debemos detener el servidor, borrar el archivo `httpserver.vsi` . Al arrancarlo nuevamente, se generará el vis a partir del JSON.
{% endhint %}

Al realizar un cambio en el panel de administración (`vAdmin`), el servidor se asegura de que la configuración quede guardada en ambos formatos.

{% hint style="info" %}
En servidores locales, por defecto, siempre se abre un puerto 443 en el servidor para servir los componentes (vAdmin Web, vDataClient Web). Pero es configurable.
{% endhint %}

## Las propiedades de un **Virtual host** son las siguientes:

### Configuración general

#### Activo

Nos permite activar o desactivar el *virtual host*.

#### Puerto de escucha

En este parámetro especificaremos el puerto de escucha para este *virtual host*. Ejemplo: 8080

#### Nombre del host&#x20;

Si vamos a usar un dominio, lo especificaremos aquí. Ejemplo: midominio.com.

Este parámetro es opcional.

#### SSL

En este parámetro configuraremos si el protocolo a usar va a ser con SSL (HTTPS) o sin SSL (HTTP).

#### Fichero certificado

Si la conexión va a ser SSL, aquí podemos especificar la senda en disco del fichero correspondiente al certificado.&#x20;

{% hint style="info" icon="circle-exclamation" %}
El certificado debe ser ***fullchain***: es el archivo que garantiza la jerarquía de confianza entre el servidor y una autoridad reconocida. Contiene, en un orden específico, la lista de certificados necesarios para que un navegador valide la conexión como segura:

1. Certificado de Entidad Final: El certificado específico de tu dominio (el "suscriptor").
2. Certificados Intermedios: Uno o varios certificados que actúan como puente, demostrando que tu dominio ha sido validado por una Autoridad Certificadora (CA) de confianza.

&#x20;Si necesitas información sobre cómo componerlo, haz clic [aquí](https://doc.velneo.com/velneo-vserver/instalacion-y-configuracion/parametros-configurables-de-velneo-vserver/componer-certificado-fullchain).
{% endhint %}

Este parámetro es opcional.

#### Fichero clave privada

Si la conexión va a ser SSL, y en el parámetro anterior hemos especificado un certificado, aquí podemos especificar la senda en disco del fichero de la clave privada del certificado.

Este parámetro es opcional.

### Instancias

Si vamos a servir vía Web objetos de [instancias](https://doc.velneo.com/velneo-vadmin/gestion-de-aplicaciones/instancias) de [proyectos](https://doc.velneo.com/velneo-vdevelop/proyectos-objetos-y-editores) de Velneo, definiremos un elemento por cada instancia a servir.&#x20;

El botón ![](https://1800796780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3LV49PQOXXZc5eok6Vpo%2Fuploads%2FVgJSdwnnSfLKRamJvsph%2Fimage.png?alt=media\&token=94e7aecd-a85c-4295-b08e-847c2822e0cb) nos permitirá configurar una instancia y el botón ![](https://content.gitbook.com/content/3LV49PQOXXZc5eok6Vpo/blobs/tRA0rXum2MOOkgkvvEnp/image.png) eliminarla.

Por cada instancia, debemos cumplimentar los siguientes parámetros:

#### Ruta

Que será la ruta para la web dentro del host que tendrá la instancia que queremos servir.

Siempre debe ir precedida del carácter "/".

#### Instancia

Que será el identificador que tenga en vAdmin la instancia que queremos servir:

<figure><img src="https://1800796780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3LV49PQOXXZc5eok6Vpo%2Fuploads%2FyephLOpKeK5Smurnh7qi%2Fimage.png?alt=media&#x26;token=68ab3806-4f7c-4ecc-a560-99086b10f0ef" alt=""><figcaption></figcaption></figure>

### Ficheros estáticos

Si desde el *virtual host* va servir ficheros estáticos, en esta sección debemos indicar:

#### Directorio raíz

Senda de disco local dentro de la cual se situarán los ficheros estáticos del *virtual host*.&#x20;

#### Fichero index

Senda de  un fichero html en disco que se cargará cuando se acceda a la URL base del host.

Por ejemplo, si hemos definido un *virtual host* para el dominio miempresa.com y creamos un fichero índex para el mismo, cuando alguien escriba en un navegador `miempresa.com`, se cargará el fichero indicado en este parámetro.

Dentro de cada fichero estático podemos configurar diversos **alias**. El botón ![](https://1800796780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3LV49PQOXXZc5eok6Vpo%2Fuploads%2FVgJSdwnnSfLKRamJvsph%2Fimage.png?alt=media\&token=94e7aecd-a85c-4295-b08e-847c2822e0cb) nos permitirá añadir un nuevo alias y el botón ![](https://content.gitbook.com/content/3LV49PQOXXZc5eok6Vpo/blobs/tRA0rXum2MOOkgkvvEnp/image.png) eliminarlo. De cada alias debemos especificar:

El **alias** (que debe ir precedido del carácter "/") por ejemplo "/filial1" y su **senda**, que se corresponderá con una carpeta física del disco.

### Página de error

El servicio HTTPS de Velneo vServer permite configurar **páginas de error personalizadas** para cada Virtual Host. Esta funcionalidad permite mostrar páginas HTML específicas cuando se produce un error HTTP (como 404 - No encontrado, 500 - Error interno del servidor, etc.), mejorando la experiencia del usuario final al proporcionar mensajes de error más amigables y coherentes con el diseño de nuestro sitio web.

El botón ![](https://1800796780-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3LV49PQOXXZc5eok6Vpo%2Fuploads%2FVgJSdwnnSfLKRamJvsph%2Fimage.png?alt=media\&token=94e7aecd-a85c-4295-b08e-847c2822e0cb) (`Ctrl + N`) nos permitirá añadir una página de error para el virtual host que estemos editando y el botón ![](https://content.gitbook.com/content/3LV49PQOXXZc5eok6Vpo/blobs/tRA0rXum2MOOkgkvvEnp/image.png) (`Supr`) eliminarla.

Los datos que debemos especificar al crear una página de error son:

#### Status

Código del error HTTP (número entre 0 y 999). Ejemplo:  `404` .

#### Senda fichero HTML

Ruta relativa al documento HTML que se mostrará cuando se produzca ese código de error. El archivo ha de estar en la Velneo\httpserver\htdocs del directorio de trabajo del servidor o en una subcarpeta dentro de ésta.

Si creamos la página de error 404.html en la carpeta, htdocs, en este parámetro especificaremos `404.html` . Si la cremos dentro de la carpeta htdocs/errores, en este parámetro especificaremos `errorres/404.html`.

**Funcionamiento**

Cuando se produce un error HTTP (por ejemplo, un recurso no encontrado genera un error 404), el servidor verifica si existe una página de error configurada para ese código.

Si existe una página de error configurada, el servidor sirve el contenido del fichero HTML especificado manteniendo el código de estado HTTP original.

Si no existe una página de error configurada para ese código específico en el Virtual Host actual, el servidor busca en la configuración del Virtual Host principal.

Si no se encuentra ninguna página de error configurada, se devuelve la respuesta de error estándar del servidor.

**Códigos de error HTTP comunes**

| Código | Descripción           | Uso recomendado            |
| ------ | --------------------- | -------------------------- |
| 400    | Bad Request           | Solicitud mal formada      |
| 401    | Unauthorized          | Acceso no autorizado       |
| 403    | Forbidden             | Acceso prohibido           |
| 404    | Not Found             | Recurso no encontrado      |
| 500    | Internal Server Error | Error interno del servidor |
| 502    | Bad Gateway           | Error de gateway           |
| 503    | Service Unavailable   | Servicio no disponible     |

{% hint style="info" %}
Las páginas de error personalizadas deben estar ubicadas en un directorio accesible por el manejador de ficheros estáticos del Virtual Host.
{% endhint %}

{% hint style="warning" %}
Si configuramos una página de error que no existe o no es accesible, el servidor devolverá el error original sin contenido personalizado.
{% endhint %}

{% hint style="info" %}
Podemos configurar páginas de error en el Virtual Host principal para que actúen como valores por defecto para todos los demás Virtual Hosts que no tengan configuración específica.
{% endhint %}

## Consumo de puestos de ejecución

Cada instancia que se configure consumirá un puesto de ejecución del servidor y admite hasta 64 conexiones concurrentes, si llega a la 65 empezará a consumir 2 puestos de ejecución del servidor ys si llega a 129, consumirá 3 puestos de ejecución.
