Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

zenproxy

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

zenproxy - npm Package Compare versions

Comparing version 0.10.16 to 0.11.9

150

documentation/ES/README.md

@@ -1,10 +0,26 @@

# ZEN-proxy
ZEN-proxy
=========
Es el modulo de ZEN destinado a tareas de reverse-proxy y balanceo de carga. Actualmente existen opciones maduras como pueden ser [NGINX](http://nginx.org/) o [HAPROXY](http://www.haproxy.org/) pero estas no funcionan bajo NodeJS. En el caso de que quieras tener tu propio proxy corriendo sobre la plataforma de NodeJS te recomendamos que utilices ZENproxy al igual que [ZENserver](https://github.com/soyjavi/zen-server) su premisa es la sencillez y el rendimiento. A diferencia con este último no necesitaremos programar ninguna linea de código puesto que toda la lógica estará definida en el fichero de configuración `zen.yml`
Es el modulo de ZEN destinado a tareas de reverse-proxy y balanceo de carga.
Actualmente existen opciones maduras como pueden ser [NGINX][1] o [HAPROXY][2]
pero estas no funcionan bajo NodeJS. En el caso de que quieras tener tu propio
proxy corriendo sobre la plataforma de NodeJS te recomendamos que utilices
ZENproxy que, al igual que [ZENserver][3], su premisa es la sencillez y el
rendimiento. A diferencia con este último, no necesitaremos programar ninguna
linea de código puesto que toda la lógica estará definida en el fichero de
configuración `zen.yml`
## 1. Inicio
[1]: <http://nginx.org/>
[2]: <http://www.haproxy.org/>
[3]: <https://github.com/soyjavi/zen-server>
1. Inicio
---------
### 1.1 Instalación
Para instalar una nueva instancia de ZENproxy únicamente tienes que ejecutar el comando:
Para instalar una nueva instancia de ZENproxy únicamente tienes que ejecutar el
comando:

@@ -15,5 +31,14 @@ ```

De esta manera tendrás todo lo necesario para comenzar con tu proyecto. Otra manera, algo más rudimentaria, es modificar el fichero `package.json` incluyendo esta nueva dependencia:
El siguiente paso es crear el fichero zen.yml que contendrá la configuracion del
proxy y el fichero zen.js con el siguiente contenido:
```
"use strict"
require('zenproxy').start();
```
Otra manera, algo más rudimentaria, es modificar el fichero `package.json`
incluyendo esta nueva dependencia:
```
{

@@ -24,3 +49,3 @@ "name" : "zen-proxy-instance",

"zenproxy" : "*" },
"scripts" : {"start": "node zen.js"},
"scripts" : {"start": "node zen.js zen"},
"engines" : {"node": "*"}

@@ -30,6 +55,21 @@ }

### 1.2 Configuración básica
Uno de los beneficios de usar ZEN es que el fichero de configuración (`zen.yml`) cobra una gran importancia a la hora de configurar el proxy y balancer. Vamos a ir analizando cada una de las opciones que nos permite establecer el fichero `zen.yml`:
### 1.2 Arranque
El proxy se ejecua mediante el siguiente comando:
```
$ node zen.js zen
```
O en su defecto, el nombre del fichero *.js* y el fichero *.yml* que hayas
creado.
### 1.3 Configuración básica
Uno de los beneficios de usar ZEN es que el fichero de configuración (`zen.yml`)
cobra una gran importancia a la hora de configurar el proxy y balancer. Vamos a
ir analizando cada una de las opciones que nos permite establecer el fichero
`zen.yml`:
```
protocol: http # or https

@@ -39,12 +79,19 @@ host : localhost

timezone: Europe/Amsterdam
timeout : 60
timeout : 2000 # ms
```
Esta sección te permite establecer la configuración general de tu ZENproxy; el **protocolo** que vas a utilizar (`http` o `https`), el **nombre** del host, **puerto**, **zona horaria** y el **timeout** máximo para cada respuesta.
Esta sección te permite establecer la configuración general de tu ZENproxy; el
**protocolo** que vas a utilizar (`http` o `https`), el **nombre** del host,
**puerto**, **zona horaria** y el **timeout** máximo para cada respuesta.
## 2. Reglas
2. Reglas
---------
### 2.1 Configuración básica
Una vez tengas la configuración básica solo nos queda configurar las reglas de nuestro proxy. Para ello utilizaremos crearemos un atributo `rules` en nuestro fichero `zen.yml` e iremos incluyendo cada una de ellas. Comencemos con nuestra primera regla:
Una vez tengas la configuración básica solo nos queda configurar las reglas de
nuestro proxy. Para ello utilizaremos crearemos un atributo `rules` en nuestro
fichero `zen.yml` e iremos incluyendo cada una de ellas. Comencemos con nuestra
primera regla:
```

@@ -62,13 +109,22 @@ rules:

Esta sería la regla más sencilla que podemos configurar en ZENproxy, veamos cada uno de sus atributos:
Esta sería la regla más sencilla que podemos configurar en ZENproxy, veamos cada
uno de sus atributos:
+ **name**: El nombre de la regla
+ **domain**: Dominio que quieres que controle el proxy
+ **query**: Url del dominio
+ **hosts**: Servidor (o servidores) a los que tiene que acceder cuando se ejecute la regla.
- **name**: El nombre de la regla
- **domain**: Dominio que quieres que controle el proxy
- **query**: Ruta que quieres controlar
- **hosts**: Servidor (o servidores) a los que tiene que acceder cuando se
ejecute la regla.
### 2.1 Estrategia de balanceo
Como ves es muy sencillo, y habrás podido deducir que en el atributo **hosts** si estableces más de un servidor ZENproxy actuará automáticamente como un balanceador. Como estrategia de balanceo utiliza *random* en el caso de que quisieses utilizar la famosa estrategia *RoundRobin* simplemente tienes que especificarlo en la regla:
Como ves es muy sencillo, y habrás podido deducir que en el atributo **hosts**
si estableces más de un servidor ZENproxy actuará automáticamente como un
balanceador. Por defecto, como estrategia de balanceo, utiliza *random* en el
caso de que quisieses utilizar la famosa estrategia *RoundRobin* simplemente
tienes que especificarlo en la regla:
```

@@ -81,6 +137,8 @@ rules:

### 2.2 URLs con expresiones regulares
Al comienzo de este capitulo vimos que podíamos establecer una url específica por medio del atributo `query`. Por ejemplo si quisieramos controlar la url *http://dominio.es/users* deberíamos hacer una configuración tal que asi:
Al comienzo de este capitulo vimos que podíamos establecer una url específica
por medio del atributo `query`. Por ejemplo si quisieramos controlar la url
*http://dominio.es/users* deberíamos hacer una configuración tal que asi:
```

@@ -90,7 +148,8 @@ ...

domain : dominio.es
query : /users
...
query : /users
...
```
En el caso de que queramos controlar urls más complejas podemos utilizar *regular expresions* para ello, veamos un ejemplo:
En el caso de que queramos controlar urls más complejas podemos utilizar
*regular expresions* para ello, veamos un ejemplo:

@@ -104,7 +163,14 @@ ```

```
En este ejemplo ZENproxy ejecutará la regla cuando la url comience por *http://dominio.es/regex/prefix-*. Esta funcionalidad puede ser muy util por ejemplo
En este ejemplo ZENproxy ejecutará la regla cuando la url comience por
*http://dominio.es/regex/prefix-*. Esta funcionalidad puede ser muy util por
ejemplo
### 2.3 Subdominios
Si quieres controlar un determinado subdominio solo tienes que hacer uso del atributo `subdomain`, obvio. Esto puede ser muy util si en tu estrategia de balanceo quieres que a un determinado subdominio un grupo específico de máquinas. Veamos como quedaría:
Si quieres controlar un determinado subdominio solo tienes que hacer uso del
atributo `subdomain`, obvio. Esto puede ser muy útil si en tu estrategia de
balanceo quieres que a un determinado subdominio controle un grupo específico de
máquinas. Veamos como quedaría:
```

@@ -120,3 +186,3 @@ rules:

port : 1983
- name : mysubdomain

@@ -131,6 +197,9 @@ domain : domain.com

### 2.4 Bloqueo de IPTables
Otra opción muy interesante es el bloqueo IPTables cuando ZENproxy y los servidores de respuesta están ejecutandose en la misma máquina. Por ejemplo, tenemos nuestro dominio.es que va a acceder a dos instancias NodeJS que se ejecutan en la misma máquina en los puertos `1980` y `1983`:
Otra opción muy interesante es el bloqueo IPTables cuando ZENproxy y los
servidores de respuesta están ejecutandose en la misma máquina. Por ejemplo,
tenemos nuestro *dominio.es* que va a acceder a dos instancias NodeJS que se
ejecutan en la misma máquina en los puertos `1980` y `1983`:
```

@@ -148,3 +217,6 @@ rules:

Si no tienes bloqueados los puertos 1980 y 1983, cualquier usuario podría acceder a *http://dominio.es:1980* (o 1983) puesto que esos puertos están visibles. Para que ZENproxy bloquee automáticamente estos puertos solo tienes que utilizar el atributo `block`:
Si no tienes bloqueados los puertos 1980 y 1983, cualquier usuario podría
acceder a *http://dominio.es:1980* (o 1983) puesto que esos puertos están
visibles. Para que ZENproxy bloquee automáticamente estos puertos mediante
reglas IPTables, solo tienes que utilizar el atributo `block`:

@@ -157,5 +229,9 @@ ```

## 3. Servidor de archivos estáticos
Por último vamos a aprender como crear un balanceador de recursos, sigue siendo igual de sencillo. Creamos una nueva nueva regla la cual controlará la url *http://127.0.0.1/files*:
3. Servidor de archivos estáticos
---------------------------------
Por último vamos a aprender como crear un balanceador de recursos, sigue siendo
igual de sencillo. Creamos una nueva nueva regla la cual controlará la url
*http://127.0.0.1/files*:
```

@@ -182,4 +258,12 @@ - name : statics

Como vemos cuando se ejecute la regla responderán las máquinas *localhost:1986* y *127.0.0.1:1987* por medio de la estrategia *RoundRobin*. En el caso de los ficheros estáticos, cada vez que se acceda a *http://127.0.0.1/files/css* se servirán los archivos contenidos en la ruta */assets/stylesheets* del directorio ZENproxy.
Como vemos, cuando se ejecute la regla responderán las máquinas *localhost:1986*
y *127.0.0.1:1987* por medio de la estrategia *RoundRobin*. En el caso de los
ficheros estáticos, cada vez que se acceda a *http://127.0.0.1/files/css* se
servirán los archivos contenidos en la ruta */assets/stylesheets* del directorio
de tu host. En el atributo *folder*, es necesario especificar la ruta completa
hasta ese directorio.
Utilizando esta técnica puedes ahorrar latencia puesto que ZENproxy no tiene que pedir los ficheros estáticos a cada uno de los hosts, sino que el se ocupará de buscarlos. Evidentemente esta técnica solo es efectiva cuando tanto ZENproxy como los hosts se ejecutan en la misma maquina.
Utilizando esta técnica puedes ahorrar latencia puesto que ZENproxy no tiene que
pedir los ficheros estáticos a cada uno de los hosts, sino que el se ocupará de
buscarlos. Evidentemente esta técnica solo es efectiva cuando tanto ZENproxy
como los hosts se ejecutan en la misma maquina.
{
"name": "zenproxy",
"version": "0.10.16",
"version": "0.11.9",
"description": "Easy (but powerful) NodeJS Proxy/Balancer",

@@ -5,0 +5,0 @@ "homepage": "http://twitter.com/soyjavi",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc