Marchio di NginxNginx � un web server di rendimento elevato e un proxy server della posta scritto da Igor Sysoev e un buon rimontaggio per il httpd del Apache, il leader di mercato. Nginx sta aumentando velocemente la relativa percentuale del mercato con i Web site importanti che la uniscono gradice wordpress.com. Nell'indagine del giugno 2008 Netcraft LiteSpeed ha perso pi� di 600 mila luoghi durante questa indagine, mentre il nginx ha guadagnato pi� di milione luoghi; pi� del raddoppiandosi nei numeri. Il sistema blogging di WordPress recentemente ha convertito tutti i relativi compensatori del carico in nginx, per mezzo del modulo verso l'alto del hash per servire 8-9 mila richieste al secondo. Anche abbiamo deciso di spostare alcuni dei nostri Web site verso Nginx. Qui sono pochi punte essenziali ed orientamenti per la configurazione del Nginx. Ci� non � un sostituto per la lettura della documentazione (RTFM). Tuttavia quando siete attaccato anche dopo lettura e rileggere la documentazione del nginx quindi siete letti sotto. Soltanto allora capirete il valore delle punte qui sotto :)

Metteremo a fuoco sulle punte generali di configurazione come pure per l'ospitalit� virtuale.

Nota: In virtuale ospitandolo usi lo stesso IP address per i Web site multipli. Ogni Web site molto probabilmente avr� le lime separate di .htaccess (che lo ammette inizialmente sono stati ospitati sul web server del httpd del Apache), indice di radice separato ecc. per esempio in un Web site che avete wordpress, mentre d'altro canto potete avere MODx e chi conosce forse il phpBB sul terzo. Tutti questi indirizzamenti differenti di .htaccess deve andare nelle lime di configurazione del nginx.

Nginx presenta una limitazione importante nelle regole di riscrittura in quanto non potete imporre i termini multipli per una regola di riscrittura. Il httpd del Apache da un lato fornisce una buona soluzione usando gli indirizzamenti multipli di RewriteCond.

Nginx da un lato concede se dichiarazione. Potete avere regole di riscrittura dentro se blocchi. Tuttavia se il blocco essi stessi � limitato. Non avete ed o o non aggiungete le circostanze multiple ad un singolo se blocco. Inoltre non potete annidare se blocchi. Non ci � dichiarazione altra neanche. Tuttavia potete usare le espressioni normali in modo da ci� che segue � possibile:

se ($request_method! ^ del ~ (OTTENGA|TESTA) $) {
    ritorno 501;
}

Tuttavia non potete controllare due variabili alla volta. Specialmente nel piano d'azione d'ospitalit� virtuale tali limitazioni possono essere percepite spesso come gli showstoppers. Tuttavia ho trovato che con il piccolo supplemento pensarlo pu� fornire le soluzioni innovarici rispondere alle vostre esigenze speciali. Per esempio una regola molto comune di .htaccess per il software di fotoricettore basato molti PHP compreso i wordpress �:

RewriteEngine sopra
RewriteBase/
RewriteCond % {REQUEST_FILENAME}! - f
RewriteCond % {REQUEST_FILENAME}! - d
RewriteRule. /index.php [L]

Dice che se il nome di schedario chiesto non � assente e non � inoltre un indice quindi invochi index.php preferibilmente.

Tuttavia mentre il RewriteCond � lo stesso per la maggior parte del software basato PHP il RewriteRule non �. Per esempio una parte delle regole di riscrittura per phpBB �:

RewriteCond % {REQUEST_FILENAME}! - f
RewriteCond % {REQUEST_FILENAME}! - d
RewriteCond % {REQUEST_FILENAME}! - l
^ di RewriteRule [a-z0-9_-] +? (p ([0-9] +) \ .html)? $ /viewforum.php? start=$2 [QSA, L, NC]

Ignori il terzo RewriteCond per ora. Inoltre controlla per vedere se c'� collegamenti simbolici. Come potete vedere la regola di riscrittura � differente. Suppongalo avere bisogno di di ospitare sia WordPress che i Web site del phpBB su un singolo IP address (singolo assistente). Poich� le prime due regole sono comuni potete fare scrivete la seguente regola che applicher� ad entrambi l'assistente:

# se � una lima, un indice o un collegamento simbolico
se (- e $request_filename) {
��� rottura;
}

Ci� fa la stessa cosa come il RewriteCond precedente fa ed � applicabile a tutti i Web site sull'assistente (presupporrlo lo ha disposto all'interno dell'assistente).

Ora potete avere regole separate di riscrittura per il vostro assistente specifico. Per esempio potete usare questa regola per il vostro blog di WordPress:

# regole di riscrittura per blog.example.com
se (^blog \ .example \ .com$ del ~* di $host) {
    ^ di riscrittura (. *) $ /index.php? q=$1 durano;
    rottura;
}

La rottura � di accertarsi che nessuna ulteriore regola sia procedata dopo tutte le dichiarazioni precedenti in se la circostanza sia stata eseguita.

L'ultimo assicura che nessuna ulteriore regola di riscrittura sia eseguita quando la regola di riscrittura abbina.

Ho scritto recentemente tre articoli con l'enfasi sull'ospitalit� virtuale:

  1. Come fare funzionare phpBB su con/senza di Nginx l'ospitalit� virtuale
  2. Nginx: come riparare l'edizione di risoluzione dell'indice cos� come interno riorienta nell'ospitalit� virtuale
  3. Come configurare Nginx per l'ospitalit� virtuale

Aggiungiamo poche pi� punte per completare il capitolo?

Come impedire le lime a cominciare da. (come .htaccess) dall'esame in Nginx?

Aggiunga questo all'interno del vostro blocchetto dell'assistente vicino alla parte superiore:

/\. del ~ di posizione {
��� neghi tutti;
}

Ci� rifiuter� tutte le richieste esterne per le lime con i nomi a cominciare da. (puntino).

Come riorientare i URL di WWW alle varianti di non-WWW?

Per esempio qui � come potete riorientare tutte le richieste come http://www.example.com/yourpage a http://example.com/yourpage:

se (^www del ~* di $host \. (. *)) {
��� regoli $host_without_www $1;
��� riscriva il ^ (. *) permanent di $ http://$host_without_www$1; # $1 contengono /yourpage, non 'www.example.net/yourpage'
}

Nota: Questo esempio proviene dal loro Web site

Come convertire le regole di riscrittura del httpd del Apache in Nginx riscriva le regole?

Ho discusso alcune sfumature sopra e negli articoli. La singola pi� grande punta che posso dare � quella nel httpd del Apache l'espressione normale in RewriteRule � abbinata con la richiesta URI senza a/all'inizio, mentre in Nginx abbina all'inizio con un uri di richiesta con un taglio. Cos� per esempio una regola di riscrittura del httpd del Apache come questa:

RewriteRule ^ [a-z0-9_-] *-f ([0-9] +)/? (p ([0-9] +) \ .html)? $ /viewforum.php? f=$1&start=$3 [QSA, L, NC]

diventa questo nel nginx:

riscrivono ^/[a-z0-9_-] *-f ([0-9] +)/? (p ([0-9] +) \ .html)? $ /viewforum.php? f=$1&start=$3 durano;

Semplice, non �?

Nota: Il RewriteCond deve essere usando d'applicazione se indirizzamenti come spiegato sopra.

Come smettere di annotare immagine/lime statiche?
Come specificare una data di scadenza per l'immagine/lime statiche?

# lime statiche di servire direttamente
~* ^.+ di posizione. (jpg|JPEG|GIF|css|png|js|ico|HTML) $ {
��� access_log������� fuori da;
��� espira���������� 30d;
}

Ritenga libero di discutere circa questo articolo nella nostra tribuna.

PS. Nel caso stiate domandando l'incisione non siete circa la rottura del software o usando per gli scopi cattivi (fendersi �). L'incisione � circa conoscere un oggetto in dettaglio intimi. Purtroppo i giornalisti di stampare-mezzi spesso confondono fra l'incisione e l'incrinamento ed ha dato l'incisione della cattiva reputazione.

PPS. Che cosa non ho esplorato ancora � la differenza di prestazione fra nginx ed il httpd del Apache. Aggiorner� pi� successivamente su quello.