systemadmin.es > LAMP y web > Instalación de nginx en modo proxy

Instalación de nginx en modo proxy

Ayer vimos como usar lighttpd en modo proxy. Hoy vamos a ver como hacer lo mismo pero con nginx.

nginx se trata de un servidor web ligero similar a lighttpd. Anteriormente ya vimos como instalar nginx con PHP.

Procedemos a su instalación mediante los siguientes comandos:

cd /usr/local/src
wget http://sysoev.ru/nginx/nginx-0.7.61.tar.gz
tar xzf nginx-0.7.61.tar.gz
cd nginx-0.7.61
./configure --prefix=/usr/local/ --without-http_autoindex_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --http-client-body-temp-path=/var/nginx/tmp/clientbody --http-proxy-temp-path=/var/nginx/tmp/proxy --conf-path=/usr/local/etc/nginx.conf --without-http_fastcgi_module --with-http_stub_status_module

Veremos un resumen al finalizar el configure similar a este:

Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + md5: using system crypto library
  + sha1 library is not used
  + using system zlib library

  nginx path prefix: "/usr/local/"
  nginx binary file: "/usr/local//sbin/nginx"
  nginx configuration prefix: "/usr/local/etc"
  nginx configuration file: "/usr/local/etc/nginx.conf"
  nginx pid file: "/usr/local//logs/nginx.pid"
  nginx error log file: "/usr/local//logs/error.log"
  nginx http access log file: "/usr/local//logs/access.log"
  nginx http client request body temporary files: "/var/nginx/tmp/clientbody"
  nginx http proxy temporary files: "/var/nginx/tmp/proxy"
  nginx http fastcgi temporary files: "fastcgi_temp"

A continuación procederemos a la compilación e instalación:

make && make install
useradd nginx -s /sbin/nologin
mkdir -p /var/nginx/tmp/clientbody
mkdir -p /var/nginx/tmp/proxy
chown nginx. /var/nginx/tmp/*

A continuación definiremos el fichero de configuración:

cat > /usr/local/etc/nginx.conf <<EOF

user  nginx;
worker_processes  4;

daemon off;

events
{
    worker_connections  1024;
}

http
{
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  3;
    gzip  on;

    server
    {
        listen       80;
        server_name    _;

        access_log      off;

        location / {
            proxy_pass         http://127.0.0.1:8080;
        }

    }
}
EOF

Como vemos, mediante la directiva proxy_pass indicamos el backend que vamos a servir a través de nginx, como puede ser un webmin.

Finalmente lo podemos levantar con las daemontools:

mkdir -p /usr/local/supervise/nginx
cat > /usr/local/supervise/nginx/run <<EOF
#!/bin/bash
exec /usr/local/sbin/nginx
EOF
chmod +x /usr/local/supervise/nginx/run
ln -s /usr/local/supervise/nginx /service

En el caso que el backend haga caso de el header Host, como sería un Apache, deberemos añadir algunos parámetros para que nginx pase el header Host y añada el X-Forwarderd-For.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>