May 052012
 

Nginx è un server Web emergente (che sostiene di far funzionare circa il 12% dei siti web) ed è conosciuto per le sue alte prestazioni, stabilità, ricco set di funzioni, semplice configurazione e basso consumo di risorse.

Personalmente lo sto usando dal 2010 e finora tutto bene, senza particolari problemi, fa perfettamente il suo lavoro ed è aggiornato di frequente dagli sviluppatori, sono davvero felice di come sta funzionando sulla mia VPS e in questo tempo ho imparato alcuni piccoli trucchi e suggerimenti che forse vi potrebbero far risparmiare del tempo in futuro.



1)

Abilitare phpmyadmin con protocollo https su una porta non standard su Nginx

Potrebbe essere utile avere installato phpMyAdmin per gestire il proprio DB, ma è una buona idea avere un VirtualHost dedicato su un canale dedicato (porta non standard), quindi per esempio avere sul https://linuxaria.com:111/phpmyadmin

Se si utilizza php5-fpm sulla porta standard allora la configurazione di Nginx per raggiungere questo obiettivo dovrebbe essere qualcosa molto simile a questo:

server {
    listen       111;
    error_page 497 = https://$host:111$request_uri;
    ssl                  on;
    ssl_certificate      /etc/myca/server.crt;
    ssl_certificate_key  /etc/myca/server.key;
    ssl_protocols        SSLv3 TLSv1;
    ssl_ciphers          HIGH:!aNULL:!MD5;
    root   /var/www/phpmyadmin;
    access_log /var/log/nginx/phpmyadmin-access.log;
    error_log /var/log/nginx/phpmyadmin-error.log;
 
 
    location / {
        index  index.html index.htm index.php;
    }
    location ~ \.php$ {
                include /opt/nginx/conf/fastcgi_params;
                fastcgi_pass  127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param  SCRIPT_FILENAME  /srv/wordpress/adminit/$fastcgi_script_name;
        }

Le direttive principali sono:

Listen 111 -> Diciamo a Nginx di ascoltare su una porta particolare
ssl on; -> Accendiamo il canale sicuro (https)
error_page 497 = https://$host:111$request_uri; -> Questa è una soluzione a portata di mano, se si raggiunge questa pagina con il protocollo http, invece di ottenere una pagina di errore che dice che si sta tentando di utilizzare http su un sito https sarete automaticamente reindirizzati al sito https.

2)

Ridirezionare url con www ad url non-www con Nginx

Alcuni siti utilizzano www ed altri non ne fanno uso, in entrambi i casi una buona cosa è quella di avere qualcosa che ridirezioni tutto il traffico di un tipo verso l’altro, quindi per girare tutte le url non-www verso un www. per linuxaria potrei aggiungere queste righe nella mia configurazione del server:

# Replace linuxaria.com with your domain
if ($host = linuxaria.com) {
rewrite ^/(.*)$ http://www.linuxaria.com/$1 permanent;
}

O fare l’opposto nel caso volessi togliere il www.

if ($host = www.linuxaria.com) {
rewrite ^/(.*)$ http://linuxaria.com/$1 permanent;
}



3)

Protezione da Hotlinking con Nginx

L’Hotlinking può essere fastidioso, ma se volete è facile prevenirlo con Nginx.
Basta ricordare che si bloccherà anche qualche motore di ricerca, come Google Image, cosa che può non essere così positiva per il vostro sito web.

In questo esempio Nginx darà un codice 403 quando un hotlinking è rilevato.

location ~* (\.jpg|\.png|\.gif|\.jpeg)$ {
     valid_referers blocked www.linuxaria.com linuxaria.com;
     if ($invalid_referer) {
        return 403;
     }

Aggiungere questo blocco dentro il blocco server di un virtual host.

Questa direttiva usa il modulo HttpRefererModule di Nginx , la direttiva valid_referers assegna un valore di 0 o 1 alla variabile $invalid_referer basandosi sul contenuto del valore del referer header.

Potete usarlo per ridurre il numero di link da siti esterni. Se il Referer header non è presente nella lista dei valid_referers, allora $invalid_referer sarà messo a 1, Io ho messo come valid referer linuxaria.com e la parola speciale blocked che va ad indicare Referer header mascherati da firewall, per esempio, “Referer: XXXXXXX”.

4)

Inviare tutte le pagine a una pagina di manutenzione con Nginx

Forse dovete fare alcuni lavori programmati sul vostro CMS, o in generale sul vostro sito, e si desidera che tutte le vostre pagine forniscono una pagina di manutenzione con un messaggio per i visitatori, con queste regole nel server si può ottenerlo facilmente:

error_page 503 @maintenance;

location /
{
if (-f $document_root/mymaintenance.html)
{
return 503;
}

try_files $uri /index.php?$args;
}

location @maintenance
{
rewrite ^ /mymaintenance.html break;
}

Quando si desidera andare in modalità manutenzione è sufficiente creare il file $DOCUMENT_ROOT/mymaintenance.html con un messaggio per gli utenti.

Popular Posts:

Flattr this!

  3 Responses to “Tips and Tricks per Nginx”

  1. Undeniably imagine that that you said. Yoour favourite justification appeared to be on the web the easiest
    thing to bear in mind of. I say too you, I certainly get irked while people consider concern that they plainly do not realize about.
    You controlled to hit thhe nail upon thhe top and outlined out the whole thing without hhaving side-effects ,
    other people can take a signal. Will likely be back to get
    more. Thanks!

Leave a Reply to Dmitry Paskal Cancel reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*