jueves, 31 de mayo de 2012

proxy inverso con nginx

En Cuba se ha puesto de moda el asunto este de el proxy inverso. Generalmente los hacen con squid y yo para no quedarme cheo decidí implementar uno. Los resultados fueron nefastos en cuanto a seguridad. Eso de tener un servidor proxy como proxy inverso no me gusto ni un poquito. Cuando lo terminé, es una herramienta par detectar vulnerabilidades web (cuyo nombre escapa de mi memoria) y por favor la vida. El proxy inverso llego a pedir autenticación para navegar y hasta mostró mi phpmyadmin y en fin, las nalgas en el cristal de la ventana como quien dicen.

Nginx, es un servidor web muy seguro y ligero creado por los rusos. Resulta que el hombre tiene soporte para proxy inverso.

El fichero /etc/nginx/nginx.conf queda así:


user                www-data www-data;
worker_processes    2;
error_log           /var/log/nginx/error.log warn;
pid                 /var/run/nginx.pid;
events {
    worker_connections  1024;
    use epoll;
}
http {
    # allow long server names
    server_names_hash_bucket_size 64;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    log_format main '$remote_addr - $remote_user [$time_local] '
                    '"$request" $status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    access_log          /var/log/nginx/access.log;
    # spool uploads to disk instead of clobbering downstream servers
    client_body_temp_path /var/spool/nginx-client-body 1 2;
    client_max_body_size 32m;
    client_body_buffer_size    128k;
    server_tokens       off;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         off;
    keepalive_timeout   5;
    ## Compression
    gzip on;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_min_length  1100;
    gzip_buffers 16 8k;
    gzip_types text/plain text/html text/css application/x-javascript \
        text/xml application/xml application/xml+rss text/javascript;
    # Some version of IE 6 don't handle compression well on some mime-types, 
    # so just disable for them
    gzip_disable "MSIE [1-6].(?!.*SV1)";
    # Set a vary header so downstream proxies don't send cached gzipped 
    # content to IE6
    gzip_vary on;
    # proxy settings
    proxy_redirect     off;
    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_max_temp_file_size 0;
    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;
    proxy_buffer_size          4k;
    proxy_buffers              4 32k;
    proxy_busy_buffers_size    64k;
    proxy_temp_file_write_size 64k;
    include             /etc/nginx/sites-enabled/*;
}

y el fichero /etc/nginx/sites-enabled/proxy
queda así:


server {
    listen       80;
    server_name  lexsa-proxy.lex-sa.cu;
    access_log  /var/log/nginx/proxy.access.log;
    error_log   /var/log/nginx/proxy.error.log;
    # proxy to Apache 2 and mod_python
    location / {
        proxy_pass         http://192.168.1.3:8080/;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_max_temp_file_size 0;
        client_max_body_size       10m;
        client_body_buffer_size    128k;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
    }
}

Ojo con la linea señalada en rojo, indica a donde estará redireccionado el tráfico. 

Simple, seguro y ligero... esto si es vida.

3 comentarios:

  1. hola se puede agregar dos servidores de apaches de la pagina para servidores un nginx de proxy inverso

    ResponderEliminar
  2. hola se puede agregar dos pagina servidores de apache y un servidor de nginx proxy inverso

    ResponderEliminar

Si vas a decir groserias, aclara el significado para los que no somos de tu mismo país.