Вы находитесь на странице: 1из 1
Blog About BY MANUEL VIERA — JANUARY 06, 2013 Nginx como proxy HTTP #NGINX #LINUX

BY MANUEL VIERA — JANUARY 06, 2013

Nginx como proxy HTTP

De con regalo gurar de Nginx Reyes para os traigo que funcione un post como bastante un proxy sencillo HTTP, sobre pero Nginx. antes Se de trata nada… de

¿Qué es un proxy?

palabra ejemplo, Un proxy proxy entre no es en un más inglés, cliente, que en un que la intermediario, comunicación puede ser un que navegador que se es realiza el signi web, entre cado petición dos que puntos. Ajax, tiene etc; la Por

y un servidor. Hay muchos tipos o aplicaciones distintas para un proxy como

pueden todas ellas ser se proxy pueden inverso combinar (reverse en proxy), una misma proxy con transparente, guración. Por proxy ejemplo cache; y

de con podríamos respuesta gurar un con de proxy gurar éste HTTP a un medida proxy inverso, que HTTP pero… se inverso va utilizando. con cache En este para caso acelerar vamos el tiempo a

¿Que nos ofrece un proxy HTTP inverso?

orientado con Antes peticiones de nada, al servicio HTTP. nuestro HTTP Aunque proxy, o HTTPS Nginx como (HTTP como su propio tal, Secure), también nombre es decir, indica, podría sólo actuar va va a estar a como trabajar IMAP Proxy, correo, un pero proxy no va para a ser el protocolo este el caso. IMAP Como (Internet proxy inverso Message nos Access va a Protocol) permitir: de

directo Añadir seguridad , de los usuarios. protegiendo al resto de servidores web del ataque seguridad, de los usuarios. protegiendo al resto de servidores web del ataque

Reescribir las URLs según nuestras necesidades. las URLs según nuestras necesidades.

podremos entre Securizar los dos enrutar el puntos. acceso la a petición nuestras HTTP aplicaciones hacia HTTPS Securizar los dos enrutar el puntos. acceso la a petición nuestras HTTP aplicaciones hacia HTTPS web y con securizar HTTPS, la es comunicación decir,

queremos servidores Imaginemos controlar web que en en nuestra nuestra la publicación DMZ red publicando corporativa de cada una diferentes o doméstica, de éstas aplicaciones al tenemos exterior. varios web, En ese pero proxy he caso, comentado podríamos HTTP y controlar anteriormente, redirigir la publicación todo el podríamos trá de co HTTP las añadir aplicaciones entrante HTTPS desde obligatoriamente web al el exterior. rewall Como hacia al el acceder contraseña), a una etc. aplicación web, añadir autenticación básica (usuario y

Con

guración

fuera Nginx. Vamos el La a caso, suponer con es guración posible que Nginx que consultar obtengo, ya se encuentra mi anterior eliminando instalado articulo los comentarios, sobre en nuestro la instalación sistema. tras haber de Si no instalado Nginx desde los repositorios de Debian 7 (Wheezy) es la siguiente:

root@nginx:/# grep ‐v "#" /etc/nginx/nginx.conf |uniq user www‐data; worker_processes 4; pid /var/run/nginx.pid;

events {

worker_connections 768;

}

http {

sendfile on;

tcp_nopush on;

tcp_nodelay on;

keepalive_timeout 65;

types_hash_max_size 2048;

include /etc/nginx/mime.types; default_type application/octet‐stream;

access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log;

gzip on;

gzip_disable "msie6";

include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites‐enabled/*;

}

instalación: fuentes. NOTA: la con utilizando guración los suele repositorios ser diferente de la dependiendo distribución o del compilando método de desde las

¿Qué signi

ca ésta con

guración?

gura el totales algunas número = directivas worker_processes de conexiones como: para * worker_connections) cada worker (recordad, y el número bloque http de conexiones que de

Podemos worker_processes apreciar varias y directivas pid ; y varios que bloques son globales: como events user , , que con

que bloques son globales : como events user , , que con ne include : permite
que bloques son globales : como events user , , que con ne include : permite
que bloques son globales : como events user , , que con ne include : permite

ne

bloques son globales : como events user , , que con ne include : permite incluir

include : permite incluir

keepalive_timeout : tiempo que se va a mantener una conexión viva. guración en guración el directorio como chero de acceso donde se registrarán las

conexiones al proxy http. de error_log conexión. : igual que access_log pero solo registrará los intentos fallidos

cheros que contienen más con

cheros de con

en este caso los tipos MIME y los

sites-enabled.

de con en este caso los tipos MIME y los sites-enabled. access_log : de ne el

access_log : de ne el

los tipos MIME y los sites-enabled. access_log : de ne el menos gzip ancho : permite
los tipos MIME y los sites-enabled. access_log : de ne el menos gzip ancho : permite

menos gzip ancho : permite de banda. comprimir los datos enviados con gzip, consumiendo Es llamado posible server que dentro y que del contenga bloque http algo como podamos lo siguiente: encontrar otro bloque

http algo como podamos lo siguiente: encontrar otro bloque server {     listen 80; server_name
http algo como podamos lo siguiente: encontrar otro bloque server {     listen 80; server_name

server {

 
 

listen

80;

server_name localhost;

location / { root html; index index.html index.htm;

 

}

500 502 503 504 /50x.html; location = /50x.html { root

error_page

html;

}

}

para con Es necesario guración cada uno eliminar principal de los sitios este nginx.conf a bloque publicar, de ya con que dentro el guración bloque del directorio en server el chero lo de de

bloque del directorio en server el chero lo de de niremos sites‐ available . sites-available y

niremos

sites‐ available .

sites-available y sites-enabled

Normalmente, sistema, durante y sobretodo la instalación si se se instala crean Nginx dos directorios utilizando los repositorios del llamados sites‐

utilizando los repositorios del llamados sites‐ available y sites‐enabled , pero ¿para qué función

available y sites‐enabled , pero ¿para qué función

tienen y para qué se usan? Muy fácil.

¿para qué función tienen y para qué se usan? Muy fácil. sitio sites‐available o aplicación guración

sitio sites‐available o aplicación guración web. : Siguiendo se por utiliza cada chero. para las sitio, buenas almacenar para prácticas, evitar la tener con se guración debe la con crear de un cada activados. apuntan sites‐enabled a El los contenido cheros : directorio de de con este guración que directorio utiliza del deben Nginx directorio ser para enlaces saber simbólicos qué sitios están que

chero de con

de todos los sitios en un solo

están que chero de con de todos los sitios en un solo guración sites‐available . son

guración

sites‐available .

todos los sitios en un solo guración sites‐available . son una Nota : una acción la

son una Nota: una acción la práctica creación que realiza muy de los común el directorios paquete realizada descargado sites‐available por la paquetería de los repositorios del y sites‐enabled sistema, durante es decir, la es instalación. instala directorios Nginx e Pero incluir desde es muy el las futuro fuentes. probable contenido En que ese dichos caso, de estos solamente directorios mediante habría no la aparezcan que crear si se dichos directiva include en la con

que crear si se dichos directiva include en la con guración principal de Nginx. Publicando un

guración principal de Nginx.

Publicando un sitio web

directorio Ya estamos sites‐available casi enabled a punto. , así Sólo que nos vamos y falta enlazarla a con ello! con gurar un una enlace redirección simbólico en el

ello! con gurar un una enlace redirección simbólico en el en sites‐ 1. Creamos el como

en sites‐

1.

Creamos el como la siguiente:

chero de con

guración test.manuelviera.es.conf en guración el

directorio /etc/nginx/sites‐available/ con una con

el directorio /etc/nginx/sites‐available/ con una con server { listen 80; server_name test.manuelviera.es;

server { listen 80; server_name test.manuelviera.es; location / {

proxy_pass http://192.168.1.200:8080; proxy_set_header X‐Real‐IP $remote_addr; proxy_set_header Host $http_host;

}

}

mismo Nota: creo que el que dominio es buena que práctica estamos establecer publicando, como es nombre decir, el de valor chero de la el que 80, cuando directiva debe es donde reciba redirigir server_name se una encuentra la petición petición . De nuestra del HTTP esta dominio guración forma, al aplicación host “test.manuelviera.es” le 192.168.1.200 es indicando el web uso desplegada. del nuestro al puerto por Nginx El 8080, el puerto que nos el módulo servidor permite proxy_pass web pasar donde la petición se incluido aloja que nuestra en nos el Core llega supuesta de hacia Nginx, aplicación. otro y es destino, la directiva Como en podéis este que caso, observar, llamada cabeceras, proxy_set_header también en este caso hemos hemos hecho editado que uso nos de dos otra permite cabeceras: directiva añadir o modi

de dos otra permite cabeceras: directiva añadir o modi ingrediente estrella en esta con car X‐Real‐IP

ingrediente estrella en esta con

directiva añadir o modi ingrediente estrella en esta con car X‐Real‐IP : contiene la IP del
directiva añadir o modi ingrediente estrella en esta con car X‐Real‐IP : contiene la IP del

car

añadir o modi ingrediente estrella en esta con car X‐Real‐IP : contiene la IP del cliente

X‐Real‐IP : contiene la IP del cliente que inicia la petición, y se ha servidor se : contiene la IP del cliente que inicia la petición, y se ha servidor se establecido hubiese destino modi el valor le cado llegue de esta la variable la cabecera IP del $remote_addr cliente (header) y no la la IP con del que la proxy idea recibiría HTTP. de que el Si al no servidor web objetivo siempre sería la del proxy HTTP.

no servidor web objetivo siempre sería la del proxy HTTP. contenido Host : Al de igual

contenido Host : Al de igual la variable que la anterior $http_host, cabecera, es decir, establecemos Host : Al de igual la variable que la anterior $http_host, cabecera, es decir, establecemos el nombre el de valor host con que el especi

có el cliente.

2. decir, Una vez crear con un gurado enlace nuestra simbólico primera hacia esta redirección, en el directorio sólo nos sites-enabled: falta activarla, es

root@nginx:~# cd /etc/nginx/sites‐enabled/ root@nginx:/etc/nginx/sites‐enabled# ln ‐s le/test.manuelviera.es.conf root@nginx:/etc/nginx/sites‐enabled# ls ‐l

total 0

/sites‐availab

lrwxrwxrwx 1 root root 43 Jan 6 12:05 test.manuelviera.es. conf ‐>

/sites‐available/test.manuelviera.es.conf

3. Una recargar vez enlazada la con guración el chero con de la con siguiente guración, instrucción: debemos obligar a Nginx a

root@nginx:~# service nginx reload

Reloading nginx configuration: nginx.

¡Perfecto! Pero aún nos queda el último paso, y no por ello menos

importante…

Comprobar el funcionamiento del proxy HTTP

que Siempre de no debemos ser así, es comprobar como si no que hubiésemos lo que hemos hecho hecho nada realmente y daremos funciona, mala ya aún utilizar imagen no se el como encuentra chero profesionales. /etc/hosts implantado Si lo en añadiendo que producción, tenemos la IP es una de un nuestro entorno prueba muy proxy de prueba, sencilla HTTP y que sería el dominio especi

de prueba, sencilla HTTP y que sería el dominio especi cado en la directiva server_name ,

cado en la directiva server_name , de la siguiente forma:

$ sudo sh ‐c "echo 192.168.1.200 test.manuelviera.es >> /etc/ho

sts"

ido al Nota: host bien, en especi nuestro mi caso, cado proxy el en proxy la HTTP, directiva HTTP tras se realizar proxy_pass encuentra la petición, en la :-) IP Otra deber 192.168.1.200. prueba habernos sencilla Si redirigido todo para ha terra.es, un servidor google.es, web interno etc; en que la sirva directiva una aplicación proxy_pass web. car , un si aún sitio no externo se dispone como de

comprobar que el proxy HTTP funciona es especi

como de comprobar que el proxy HTTP funciona es especi Y esto ha sido todo amigos!
como de comprobar que el proxy HTTP funciona es especi Y esto ha sido todo amigos!

Y esto ha sido todo amigos! Espero que os sea de utilidad y Feliz día de Reyes! Un saludo.

Tweet
Tweet
Tweet 21 Written with  by Manuel Viera
21
21

Written with by Manuel Viera

·

·

with  by Manuel Viera Manuel Viera · Blog · About Powered by Hugo & hosted

Powered by Hugo & hosted by Hecho con + + + +

|
|