Si vous êtes l’heureux possesseur d’un site hébergé sur un serveur dédié, la popularité est une bonne chose mais peut vite s’accompagner d’autres inconvénients comme la saturation des ressources de votre serveur.

optimisation

La solution la plus simple est souvent de passer à une offre supérieure (et donc plus chère), mais cela peut être sans fin ou presque, et les migrations ne sont pas forcément une partie de plaisir. Modifier l’architecture est parfois une meilleure solution et permet de mieux profiter de son hébergement actuel sans trop d’efforts et sans surcoût. Si vous travaillez bien, vous pourrez en plus anticiper le passage à une architecture à plusieurs serveurs.

Pourquoi mon serveur plante ?

Le problème principal affectant les serveurs Web comme Apache est la quantité de RAM disponible sur le système. Un serveur ne devrait jamais saturer sa RAM et utiliser le SWAP, c’est-à-dire la mémoire virtuelle sur le disque dur.

Si le SWAP est utilisé, le temps de réponse du serveur augmente, et les visiteurs rafraichissent alors plusieurs fois la page accentuant encore la charge sur le serveur. Le SWAP se remplit alors dangereusement et les autres processus du système deviennent à leur tour inaccessibles ou très lents (MySQL, SSH, etc.).

Il faut alors bien souvent redémarrer au moins le processus Apache.

La valeur à ajuster pour éviter certains problèmes est « MaxClients » :  elle correspond au nombre maximum de visiteurs qui pourront être servis simultanément. Positionnez cette valeur trop bas et les requêtes seront placées en file d’attente alors qu’il reste des ressources sur le serveur. Positionnez cette valeur trop haut et la consommation de ressources sera trop importante, jusqu’au swap… vous connaissez la suite.

Pour bien configurer cette valeur, il n’y a pas de miracle : il faut tester plusieurs configurations et voir comment le système réagit à la charge. La documentation Apache préconise de faire le calcul suivant : MaxClients = Mémoire totale disponible pour Apache / Mémoire moyenne d’un processus Apache.

Par exemple, sur un système avec 2 Go de mémoire, si vous souhaitez laisser 1800Mo à Apache, et si un processus Apache prend 10Mo en moyenne, MaxClients sera égal à 1800/10 = 180. En pratique, il sera souvent possible de mettre un peu plus, la mémoire affichée comme étant allouée à un processus n’étant pas forcément totalement utilisée.

A vous de voir pour la mémoire totale disponible pour Apache, elle doit correspondre à la mémoire totale de votre système moins celle que vous voulez accorder aux autres processus.

La mémoire moyenne d’un processus Apache peut être obtenu à l’aide de la commande « top » ou d’une commande de ce style :

ps -ylC apache2 --sort:rss

(La mémoire utilisée par les processus étant indiquée en ko dans la colonne RSS).

Séparer contenu dynamique et contenu statique

Lorsque l’on utilise Apache avec du contenu dynamique (avec mod-php5 par exemple), la mémoire utilisée par un processus peut vite devenir importante (6 -30Mo), et elle ne sera pas libérée immédiatement par ce processus. Que ces processus distribuent également le contenu statique (images, css, html, fichiers textes, documents, archives,etc. )  n’est pas forcément le plus adapté.

Traiter ces deux types de contenus par deux processus différents est souvent préférable au niveau des performances. Pour cela, il y a plusieurs solutions envisageables : utiliser mod_proxy et transmettre certaines requêtes à un autres processus Apache, ou utiliser un autre serveur Web reconnu pour ses performances notamment pour le traitement des fichiers statiques.

Pour ce dernier choix, deux serveurs Web alternatifs font parler d’eux : Lighttpd (lighty pour les intimes) et nginx (Engine X).

light_logo

nginx

Nginx est un serveur Web/reverse proxy léger développé par Igor Sysoev. Il a été utilisé depuis plusieurs années sur des sites russes à gros traffic tel que Rambler, avant d’être plus largement répandu aujourd’hui : WordPress.com, huluGravatar, Kongregate, userscripts.org et même YouPorn (gage de qualité, n’est-t-il pas ?).

absolut-nginx

Installation de nginx

Pour l’installation, une fois les sources téléchargées, il suffit de lancer le classique :

./configure
make
sudo make install

Ou si vous utilisez des dépôts récents sous Debian :

apt-get install nginx

En fonction de l’installation choisie, les répertoires pourront varier dans ce qui suit.

Configuration de base

La configuration serveur de nginx est relativement sommaire, ce qui a au moins le mérite de nous éviter le casse-tête du tuning comme avec Apache ou MySQL.

/etc/nginx/nginx.conf
 
user www-data;
worker_processes  1;
 
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;
 
events {
    worker_connections  1024;
}
 
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
 
    access_log  /var/log/nginx/access.log;
 
    sendfile        on;
    #tcp_nopush     on;
 
    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;
 
    gzip  on;
 
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

La configuration initiale est performante et devrait convenir à une majorité de sites Web. Il est conseillé d’éviter de modifier le nombre de « worker_processes » sauf si vous savez ce que vous faites (serveur multi-core par exemple). L’architecture du processus est largement différente de celle d’Apache et plusieurs processus n’amélioreront pas forcément vos performances.

Nginx est un serveur asynchrone par opposition aux serveurs synchrones où chaque requête est traitée par un processus dédié. Au lieu d’exploiter une architecture parallèle et le multiplexage temporel des tâches par le système d’exploitation, Nginx utilise les changements d’états pour gérer plusieurs connexions en même temps ; le traitement de chaque requête est découpé en de nombreuses mini-tâches et permet ainsi de réaliser un multiplexage efficace entre les connexions. Afin de tirer parti des ordinateurs multi-processeurs, plusieurs processus peuvent être démarrés. Ce choix d’architecture se traduit par des performances très élevées mais également par une charge et une consommation de mémoire particulièrement faibles comparativement aux serveurs HTTP classiques tels qu’Apache. (Source)

Pour des configurations plus avancées, vous pouvez consulter cet exemple, ou celui-ci.

Utiliser nginx pour votre contenu statique

Dans cette configuration, simple à mettre en œuvre, nginx sera placé en amont d’un serveur Apache et s’occupera de tous les fichiers statiques (images, CSS, textes, etc.) et toutes les autres requêtes seront envoyées normalement au serveur Apache.
Cette configuration sera pertinente surtout si votre serveur ne passe pas 90% de son temps à construire des pages dynamiquement (PHP). Avec WordPress, cette configuration sera intéressante si vous utilisez déjà un système de cache. Dans le cas contraire, je vous invite à consulter cet article au préalable : WordPress : optimiser son blog avec un système de cache, ou d’aller jusqu’à la fin de cet article pour utiliser également nginx en tant que cache.

/etc/nginx/sites-available/default
 
server {
  listen      80;
  server_name www.papygeek.com;
 
  access_log  /var/log/nginx/papygeek.com-access.log;
  error_log   /var/log/nginx/papygeek.com-error.log;
 
  # Les requêtes sont transmises au processus Apache écoutant en local sur le port 8080
  location / {
    proxy_pass         http://127.0.0.1:8080/;
    include  /etc/nginx/proxy.conf;
  }
 
  # On distribue les fichiers statiques directement
  location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|txt|srt|swf)$ {
    root  /var/www/papygeek.com/;
    access_log  /var/log/nginx/static-papygeek.com-access.log;
    error_log   /var/log/nginx/static-papygeek.com-error.log;
    expires           30d;
  }
}
/etc/nginx/proxy.conf
 
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;
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;

Ceci fonctionne dans le cas où vous n’avez qu’un seul site hébergé sur votre serveur. Dans le cas d’une configuration avec des virtual hosts, il faudra soit configurer chaque domaine, soit ajouter une règle générique qui transmettra les requêtes des autres domaines au serveur Apache :

/etc/nginx/sites-available/default
 
...
 
server {
  listen 80 default;
  server_name _;
 
  # Ici on désactive les access_log pour ne pas faire doublon avec Apache
  access_log        off;
  #access_log  /var/log/nginx/default.access.log;
 
  server_name_in_redirect on;
 
  location / {
    proxy_pass         http://127.0.0.1:8080/;
    include /etc/nginx/proxy.conf;
  }
}

Il faudra ensuite modifier la configuration de votre serveur Apache pour que celui-ci écoute sur le port 8080. Il ne sera accessible que localement, puisque toutes les requêtes passeront maintenant par nginx.

Pensez à faire une sauvegarde de vos fichiers avant de vous lancer dans les modifications.

Il faut modifier dans tous vos fichiers de configuration Apache les références au port 80, qui devient 8080 ici, ainsi que les références à l’IP de votre serveur, qui devient 127.0.0.1.

/etc/apache2/apache2.conf
 
NameVirtualHost 127.0.0.1:8080
/etc/apache2/ports.conf
 
Listen 127.0.0.1:8080

Et dans vos virtual hosts :

/etc/apache2/sites-available/papygeek.com
 
<VirtualHost 127.0.0.1:8080>
  ServerAdmin papygeek@gmail.com
  ServerName papygeek.com
  DocumentRoot /var/www/papygeek.com
  ...
</VirtualHost>

Il ne vous reste plus qu’à redémarrer tout ça et à croiser les doigts :

/etc/init.d/apache2 restart
/etc/init.d/nginx start

Pour en savoir plus sur nginx, vous trouverez de nombreuses informations sur ce Wiki, notamment pour l’installation.

Utiliser nginx en tant que cache

Même si nginx n’est pas prévu pour être utilisé en tant que cache (contrairement à Squid par exemple), il est possible d’utiliser la fonction proxy_store pour créer un miroir du site en backend.

Voici un exemple de configuration pour débuter, dans le cas de l’utilisation de WordPress avec réécriture d’URL :

/etc/nginx/sites-available/default
 
server {
  listen      80;
  server_name www.papygeek.com;
 
  access_log  /var/log/nginx/papygeek.com-access.log;
  error_log   /var/log/nginx/papygeek.com-error.log;
 
  include  /etc/nginx/proxy.conf;
 
  location / {
    # Notre répertoire de cache, à créer.
    root /var/www/papygeek.com/fetch;
 
    # On n'utilise pas le cache pour les requêtes des utilisateurs connectés
    if ($http_cookie ~ "comment_author_|wordpress|wp-postpass_" ) {
      access_log off;
      proxy_pass http://127.0.0.1:8080;
      break;
    }
    # On n'utilise pas le cache pour les requêtes avec des query strings
    if ($query_string) {
      access_log off;
      proxy_pass http://127.0.0.1:8080;
      break;
    }
    if (-f $request_filename/_cache.html) {
      rewrite (.*) $1/_cache.html;
    }
    error_page 403 404 = /fetch$uri;
  }
 
  # Lorsque le cache ne contient pas la page (404), on interroge Apache et on stocke le résultat.
  location  ^~ /fetch/ {
    internal;
    proxy_pass http://127.0.0.1:8080;
    proxy_store /var/www/papygeek.com${uri}_cache.html;
    proxy_store_access user:rw group:rw all:r;
  }
 
  # Les requêtes vers des fichiers php et l'administration du blog ne doivent pas utiliser le cache
  location ~ (\.php$|^/wp-admin) {
    root  /var/www/papygeek.com/;
    proxy_pass http://127.0.0.1:8080;
  }
 
  # On distribue les fichiers statiques directement
  location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|txt|srt|swf)$ {
    root  /var/www/papygeek.com/;
    access_log  /var/log/nginx/static-papygeek.com-access.log;
    error_log   /var/log/nginx/static-papygeek.com-error.log;
    expires           30d;
  }
}

Les commentaires dans le code devrait être relativement explicites. On détourne ici la fonction « error_page » pour lancer une requête vers le serveur Apache lorsqu’une page n’est pas trouvée dans le cache. Le résultat est alors stocké pour la prochaine requête. La configuration est assez particulière mais nécessaire lorsque les pages du site ne se terminent pas par .html (nginx ne sachant pas stocker les pages par défaut dans ce cas). (Source)

Ce système remplace habilement WP Super Cache qui fonctionne sur un principe similaire. A une petite différence près : ici les fichiers ne sont jamais purgés, il faudra donc effectuer cette purge régulièrement pour s’assurer de la fraicheur des pages.
Ceci peut être effectué facilement en ajoutant une tâche ou un script en crontab.

On peut également penser extraire et adapter la partie du code de WP Super Cache s’occupant de la purge du cache pour en faire un plugin WordPress.

Une autre approche qui ne fonctionne que si WP Super Cache est installé, est de ne pas créer de cache du côté d’nginx mais de rooter directement les utilisateurs vers les fichiers de cache de WP Super Cache (sans passer par Apache). De nombreuses ressources discutent de cette solution sur le Web, je vous laisse faire vos retours sur cette technique. Exemples : How To Speed Up WordPress With Nginx And WP Super Cache, nginx rewrite rules for WordPress + WP Super Cache, Nginx SuperCache WP Super Cache Plugin Rewrites WordPress Mu.

De manière complètement différente, il est également possible de tester l’utilisation d’nginx seul, avec PHP en FastCGI. Il faudra alors également trouver les bonnes règles de réécriture pour les URL du site. Dans ce cas, l’utilisation de lighttpd est peut-être préférable les ressources sur le Web étant plus abondantes pour l’instant.

Corriger le problème de l’adresse IP des clients

Un petit problème peut se produire lorsque l’on utilise un reverse-proxy comme dans notre configuration : l’IP des clients affichée par certains scripts PHP sera l’IP du proxy (127.0.0.1 si les deux processus sont sur la même machine). C’est le cas par exemple pour l’IP des commentaires dans WordPress.
Pour corriger ce problème, une solution relativement simple existe : l’installation du module rpaf.

Sous debian, l’installation de mod_rpaf s’effectue le plus simplement du monde :

apt-get install libapache2-mod-rpaf

Le module devrait alors être activé, dans le cas contraire :

a2enmod rpaf
/etc/init.d/apache2 restart

(Source).

Et après ?

Si la charge de votre serveur augmente encore, vous aurez alors plusieurs possibilités en fonction de la nature de votre site et du goulot d’étranglement (MySQL ou Apache par exemple) :

  • Déplacer Apache sur un autre serveur (si c’est le processus Apache qui sature),
  • Déplacer MySQL sur un autre serveur (si c’est le processus Apache qui sature),
  • Ajouter un autre serveur Apache grâce à la fonction de load-balancer d’nginx,
  • Ajouter un autre serveur MySQL, plusieurs serveurs Apache, plusieurs nginx, et trouver un site qui a besoin de toutes ces ressources ;)

Exemple de configuration d’nginx en tant que load balancer :

http {
    upstream myproject {
        server 127.0.0.1:8000 weight=3;
        server 127.0.0.1:8001;
        server 127.0.0.1:8002;    
        server 127.0.0.1:8003;
    }
 
    server {
        listen 80;
        server_name www.domain.com;
        location / {
            proxy_pass http://myproject;
        }
    }
}

Les configurations précédentes sont très simples à adapter dans cette optique.

Voilà, c’est tout pour cette fois, je pense que vous avez de quoi bosser. Si vous cherchez d’autres tutoriels sur nginx, voici un bon début. Merci à Stagueve de m’avoir orienté sur ce produit et enrichi ma culture ;)

 


 

51 réponses pour "Optimiser son serveur Web avec Nginx"

  1. auvergnator  Surfe sur Mozilla Firefox Mozilla Firefox 3.0.5 avec Windows Windows XP
    15 janvier 2009 @ 20:34
    1

    :thumbsup: L’année 2009 c’est l’année des gros billets et des gros tutos , qu’est ce qui te prends papy !!!

  2. Wise  Surfe sur Mozilla Firefox Mozilla Firefox 3.0.5 avec Ubuntu Linux Ubuntu Linux
    15 janvier 2009 @ 21:46
    2

    Article très intéressant, merci, j’ai pu découvrir nginx.

    C’est peut être juste dommage que tu ne mentionnes pas la migration de MySQL vers PostgreSQL, car lorsque l’on arrive à un stade où il faut ajouter un serveur MySQL, il est je pense nécessaire de penser à passer à un SGBD d’un autre niveau.

  3. binbin  Surfe sur Mozilla Firefox Mozilla Firefox 3.0.5 avec Windows Windows XP
    16 janvier 2009 @ 15:42
    3

    Tu es toujours sur un solution debibox papy ? Ca te coute combien par mois ?

  4. Papy  Surfe sur Mozilla Firefox Mozilla Firefox 3.1b2 avec Windows Windows XP
    16 janvier 2009 @ 16:20
    4

    @binbin – 29.99 € HT (35.87 € TTC). C’est le premier modèle de dedibox.

  5. Greg  Surfe sur Mozilla Firefox Mozilla Firefox 3.0.5 avec Ubuntu Linux Ubuntu Linux
    17 janvier 2009 @ 0:58
    5

    Merci beaucoup pour cet article très intéressant et très détaillé :d
    Par contre, j’ai juste une erreur “ps -ylC apache2 –sort:rss” dans la partie 1 ne fonctionnent pas chez moi, j’ai du enlever le « -sort:rss » je suis sur une debian (ubuntu) pourtant ….

  6. Papy  Surfe sur Mozilla Firefox Mozilla Firefox 3.0.5 avec Windows Windows Vista
    17 janvier 2009 @ 12:02
    6

    @Greg – Il y a deux tirets à la suite avant le sort, c’est WordPress qui a formaté en tiret long…

  7. Sébastien C.  Surfe sur Mozilla Firefox Mozilla Firefox 3.0.5 avec Windows Windows XP
    18 janvier 2009 @ 12:28
    7

    Sympa le tuto, mais pour l’instant je me contente du cache d’apache, c’est bien suffisant dans mes proportions.

    Il y a juste une petite erreur dans la section « Et après », je suppose qu’on déplace MySQL si c’est lui qui sature, pas apache. Non ?

    # Déplacer Apache sur un autre serveur (si c’est le processus Apache qui sature),
    # Déplacer MySQL sur un autre serveur (si c’est le processus Apache qui sature),

  8. Kiosque des Blogs numéro 15 | Blog radar  Surfe sur WordPress WordPress 2.6.1
    18 janvier 2009 @ 18:29
    8

    […] Optimiser son serveur grâce à Nginx, Papygeek nous propose le pas à pas pour y […]

  9. Mr Xhark  Surfe sur Mozilla Firefox Mozilla Firefox 3.0.5 avec Windows Windows Vista
    20 janvier 2009 @ 22:37
    9

    A l’époque ou je m’étais intéressé à nginx je ne trouvais que peu d’infos sur ce type de serveur. Là je dois dire que tu as fait un beau tour d’horizon !

  10. Optimiser son serveur Web avec Nginx | bonvga.net  Surfe sur Drupal Drupal
    21 janvier 2009 @ 13:01
    10

    […] serveur dédié, la popularité est une bonne chose mais peut vite s’accompagner d’autres … [ Lire la suite ] Liens Ajouter un […]

  11. Les liens de la semaine | Oxeron Internet and Mobile Service Sarl  Surfe sur WordPress WordPress 2.7
    23 janvier 2009 @ 8:46
    11

    […] un très bon tutorial détaillé pour installer un serveur web léger chargé de délivrer les conte…. Il faudra que je teste ça sur mon serveur virtualbox un de ces […]

  12. ButterflyOfFire  Surfe sur Mozilla Firefox Mozilla Firefox 3.0.5 avec Ubuntu Linux Ubuntu Linux
    25 janvier 2009 @ 1:59
    12

    Excellent billet Papy :)

  13. • (parenthèse.be)  Surfe sur WordPress WordPress 2.6.2
    07 février 2009 @ 14:25
    13

    […] avoir lu l’excellent tutoriel de PapyGeek, comment optimiser son serveur web avec Nginx, et uniquement des retours positif sur l’utilisation de Nginx, j’ai voulu tenter […]

  14. Céd'  Surfe sur Mozilla Firefox Mozilla Firefox 3.0.6 avec Mac OS X Mac OS X 10
    07 février 2009 @ 19:00
    14

    Excellent tutoriel! J’ai l’ai mis en place ce matin, mais depuis, je constate que le nombre de processus apache minimum est maximum sont passé de 2 à 13 et de 3 à 15. Aurais-tu eu le même problème?

  15. hajji  Surfe sur Internet Explorer Internet Explorer 6.0 avec Windows Windows XP
    16 février 2009 @ 16:56
    15

    tres interessant !
    merci

  16. Ragen  Surfe sur Mozilla Firefox Mozilla Firefox 3.0.7 avec Windows Windows XP
    18 mars 2009 @ 21:15
    16

    Salut, et merci beaucoup pour ce tuto !
    Une petite interrogation, pour le fichier de config générique qui concerne un environnement avec plusieurs virtualhosts, tu mets la directive server_name_in_redirect à on… Ce qui a pour effet de rediriger vers ce qui est indiqué dans server_name, soit http://_.com. Faudrait pas plutôt le mettre à off ?

    A + et encore merci pour le tuto

  17. [Serveur] Optimiser son serveur web avec Nginx - PHWinfo  Surfe sur Netscape Navigator Netscape Navigator 4.0
    04 avril 2009 @ 20:17
    17

    […] [Serveur] Optimiser son serveur web avec Nginx Installation de nginx : OPTIMISER SON SERVEUR WEB AVEC NGINX […]

  18. [Apache] Optimiser Apache - PHWinfo  Surfe sur Netscape Navigator Netscape Navigator 4.0
    04 avril 2009 @ 20:19
    18

    […] [Apache] Optimiser Apache Optimiser son serveur Apache avec Nginx : OPTIMISER SON SERVEUR WEB AVEC NGINX […]

  19. Drek  Surfe sur Mozilla Firefox Mozilla Firefox 3.5.2 avec Mac OS X Mac OS X 10
    07 août 2009 @ 1:56
    19

    Merci pour cet article, j’ai créé mon serveur d’image en 2h facilement…

    Maintenant, Evilox, ca dépote ! :yes:

  20. hasic  Surfe sur Mozilla Firefox Mozilla Firefox 3.5.2 avec Windows Windows XP
    20 août 2009 @ 14:02
    20

    au secours ……. :cry:

    voilà mon cas, j’ai un serveur sur un réseau local qui héberge mon webmail (plateforme zope plone avec apache, postfix), en dmz je souhaite mettre en place nginx afin qu’il fasse office de reverse proxy pour permettre ainsi à des utilisateurs de se connecter sur notre système de messagerie depuis internet.

    le problème c’est que la fonction « proxy_pass http://l'ip du serveur en interne » me permet d’atteindre la page d’authentification et après plus rien.

    étant novice dans la configuration de serveurs web, proxy et reverseproxy votre aide me serait d’un énorme secours.

    merci par avance …….

  21. TooNetworks  Surfe sur Mozilla Firefox Mozilla Firefox 3.5.2 avec Windows Windows XP
    28 août 2009 @ 16:33
    21

    Très bon ! Merci !

  22. Maxime95k  Surfe sur Mozilla Firefox Mozilla Firefox 3.0 avec Windows Windows 7
    31 août 2009 @ 18:40
    22

    Merki :)

  23. Optimisation TYPO3 – cacher les pages avec memcache | bertrandkeller  Surfe sur WordPress WordPress 2.8.4
    08 septembre 2009 @ 10:43
    23

    […] reste optionnel. Pour avoir des plus amples informations sur ce serveur consulter les articles : Optimiser son serveur Web avec Nginx […]

  24. Le blog à Dju  Surfe surUnknown browser
    03 janvier 2010 @ 15:24
    24

    Installer Ubuntu Server sur le zotac mag…

    Aujourd’hui au programme, installer ubuntu server 9.10 Mon ami ayant eu à nouveau besoin de son lecteur dvd usb, il nous faudra passer par la clé USB. Pour cela, il vous faudra un autre ordinateur, déjà sous ubuntu, afin de formater la clé usb et de l…

  25. Friendly Froggy ;-) » Les solutions de reverse cache proxy pour pallier aux problèmes de cache  Surfe sur WordPress WordPress abc
    13 janvier 2010 @ 14:15
    25

    […] Intro et configuration (Papy Geek) […]

  26. la_flegme  Surfe sur Mozilla Firefox Mozilla Firefox 3.5.6 avec Linux Linux
    14 janvier 2010 @ 17:59
    26

    salut
    si cela peux aider
    contenu d’un htaccess apache2 pour wordpress

    # BEGIN WordPress

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

    # END WordPress

    dans la conf wordpress permalien personnalisé /%category%/%postname%/
    qui donne http://domaine.tld/rubrique/titredelarticle (comme sur ici en gros)

    qui deviens dans nginx (pas dans le htaccess mais direct dans la conf du vhost)

    if (!-e $request_filename) {
    rewrite ^([_0-9a-zA-Z-]+)?(/wp-.*) $2 last;
    rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last;
    rewrite ^ /index.php last;
    }

    que je place dans la balise comme cela

    location / {
    root /var/www/;
    index index.php index.html index.htm;
    if (!-e $request_filename) {
    rewrite ^([_0-9a-zA-Z-]+)?(/wp-.*) $2 last;
    rewrite ^([_0-9a-zA-Z-]+)?(/.*\.php)$ $2 last;
    rewrite ^ /index.php last;
    }

    }

    petite précision pour viré la signature de la version de nginx (nginx/0.6.34 en exemple ici)

    rajouter
    server_tokens off;
    juste avant le dernier }
    de nginx.conf

    en utilisant php modifier aussi
    fastcgi_params la ligne
    fastcgi_param SERVER_SOFTWARE nginx;

    ça évite juste que la version de nginx soit afficher

    sinon merci pour cette excelent article :wub:

  27. Stephane Varoqui  Surfe sur Safari Safari 530.19 avec Mac OS X Mac OS X 10.5.8
    21 janvier 2010 @ 16:25
    27

    Merci Papy ,

    Ne dévoile pas tous les secrets, comment va on faire pour gagner de l’argent chez MySQL maintenant :tongue:

    Pour un prochain post, distribuer la charge avec Gearman me semble plus que geek …

    //svar

  28. Patrick  Surfe sur Mozilla Firefox Mozilla Firefox 3.5.8 avec Windows Windows XP
    23 février 2010 @ 17:05
    28

    Super intéressant même pour un non-initié comme moi.

    Petite question aux connaisseurs : en actualisant le webmin d’OVH sur lequel mon site est hébergé en dédié, je viens de me rendre compte que mon ancien webmaster avait installé le fameux nginx en plus d’Apache. Utilisant wordpress avec des plugins de cache, etc. visiblement je n’ai plus vraiment besoin de nginx.

    Or, OVH m’indique que si je veux intégrer les nouvelles fonctionnalités du webmin, il faut relancer Apache, et donc stopper nginx… Ca peut vous paraître bête, mais que faut-il faire et est-ce possible de supprimer nginx, et quelles conséquences ?

    Merci d’avance à Papy Geek et à ses fans…

    :yes:

  29. Manu  Surfe sur Google Chrome Google Chrome 5.0.334.0 avec Windows Windows 7
    01 mars 2010 @ 10:31
    29

    Un énorme merci pour ce fabuleux tuto. J’ai réussi à mettre en place nginx en proxy alors que je n’y connaissais rien. Mon petit RPS respire à nouveau.

  30. Grosses optimisations sur Zerbynet - Zerbynet  Surfe sur WordPress WordPress 2.9.2
    01 mars 2010 @ 12:12
    30

    […] des grosses optimisations, je teste actuellement une solution à base de proxy Nginx (merci à PapyGeek pour son tuto). En effet tout le contenu statique (images, javascript, css, etc) est désormais […]

  31. Nginx en reverse proxy pour plusieurs blogs Wordpress | AbriCoCotier.fr  Surfe sur WordPress WordPress 2.9.1
    19 avril 2010 @ 20:36
    31

    […] façon de mettre tout cela en place. J’ai tenté de suivre au mieux les conseils donnés par Papygeek pour installer Nginx. Je vous recommande son billet si vous souhaitez également tenter […]

  32. Nginx + PHP-FPM et WP-Super-Cache ? | AbriCoCotier.fr  Surfe sur WordPress WordPress 2.9.1
    21 avril 2010 @ 18:35
    32

    […] (tiré du post de PapyGeek) […]

  33. Dof  Surfe sur Debian IceWeasel Debian IceWeasel 3.0.6 avec Debian GNU/Linux Debian GNU/Linux
    03 août 2010 @ 22:26
    33

    Tres bon post merci pour le partage

  34. Looic  Surfe sur Google Chrome Google Chrome 5.0.375.127 avec Windows Windows XP
    01 septembre 2010 @ 18:49
    34

    Hello ! Super tutoriel !
    Juste une question, je suis tombé sur cet article, qui lui utilise entres autres la directive proxy_cache_path :

    http://www.saltycrane.com/blog/2009/11/using-nginx-caching-proxy-wordpressapache/

    Pourquoi ne pas avoir bâti la configuration de votre nginx sur cette directive ? Quels sont les avantages / inconvénient de l’une ou l’autre de ces solutions ?

    Merci,
    Looic.

  35. Nunu  Surfe sur Mozilla Firefox Mozilla Firefox 3.6.8 avec Mac OS X Mac OS X 10
    06 septembre 2010 @ 11:30
    35

    Bonjour,

    J’ai fait un essai sur l’un de mes serveurs, j’ai régulièrement des erreurs :

    **/**/** 11:03:15 [error] ****#*: ******* upstream prematurely closed connection while reading response header from upstream, client: ***.***.***.***, server: ****.**, request: « GET /***/*** HTTP/1.1 », upstream: « http://127.0.0.1:8080/***/***/ », host: « ***.****.** », referrer: « *************** »

    Une idée de ce que cela pourrait être ?

    Merci pour le tuto en tout cas!

  36. sadotmd  Surfe sur Mozilla Firefox Mozilla Firefox 3.6.3 avec Ubuntu Linux Ubuntu Linux
    15 septembre 2010 @ 11:42
    36

    For security reasons it is good to have the following directive in nginx.conf:
    server_tokens off;

  37. Papyzor  Surfe sur Mozilla Firefox Mozilla Firefox 3.6.10 avec Windows Windows 7
    03 octobre 2010 @ 21:36
    37

    Hello, je trouve votre tuto génial mais le problème et qu’en faisant un « apt-get install nginx » sur Debian on a la version « 0.6.32 » comment mettre la dernière version !?

    Merci

  38. la_flegme  Surfe sur Mozilla Firefox Mozilla Firefox 3.6.10 avec Ubuntu Linux Ubuntu Linux
    03 octobre 2010 @ 21:40
    38

    tu la compile toi même la dernière version

    mais celle des dépôts de debian fonctionne parfaitement et sans faille connu (sinon l’équipe de debian patch)

  39. Papyzor  Surfe sur Mozilla Firefox Mozilla Firefox 3.6.10 avec Windows Windows 7
    06 octobre 2010 @ 19:06
    39

    Y aurais t-il un tuto pour installer la nouvelle version d’Apache ou Nginx sans couper le serveur web !!

  40. nginx: serveur web complet extralight | Shtark.fr  Surfe sur WordPress WordPress abc
    15 novembre 2010 @ 1:47
    40

    […] http://www.papygeek.com/software/optimiser-son-serveur-web-avec-nginx/ apache, lighttpd, nginx, serveur, simple, Web […]

  41. Installer le dernier nginx | Shtark.fr  Surfe sur WordPress WordPress abc
    15 novembre 2010 @ 21:44
    41

    […] http://www.papygeek.com/software/optimiser-son-serveur-web-avec-nginx/ apache, lighttpd, nginx, serveur, simple, Web […]

  42. LombertLesBoins  Surfe sur Mozilla Firefox Mozilla Firefox 3.6.12 avec Windows Windows 7
    19 novembre 2010 @ 13:14
    42

    Personnellement j’ai utilisé NGinx sur des serveurs de pseudostreaming avec PHP et j’en suis largement satisfait. Merci pour ce billet =)

  43. CLOUD #1: UTILISER AMAZON S3 SANS SE RUINER  Surfe sur WordPress WordPress 3.0.2
    06 décembre 2010 @ 16:01
    43

    […] vous n’avez jamais configuré nginx, je vous renvoie vers le guide d’installation de Nginx de Papygeek qui est bien fait. Pour la partie miroir vous trouverez un exemple de configuration tel […]

  44. Pocker  Surfe sur Mozilla Firefox Mozilla Firefox 3.6.15 avec Windows Windows XP
    10 mars 2011 @ 15:35
    44

    Merci pour le tuto! :)

    Je cherche justement à déployer nginx pour optimiser mon système, j’utilise déjà WP super cache avec WordPress, j’espère que ça améliorera encore plus les performances ^^

  45. Meyo  Surfe sur Mozilla Firefox Mozilla Firefox 4.0.1 avec Windows Windows 7
    16 mai 2011 @ 18:24
    45

    Salut! s’il vous plait j’ai un sérieux problème avec ce nginx! il me prend le port de « wampserver » (c-à-d le 80). je travaille sous W7, et je veux vraiment savoir comment supprimer ce serveur car il me bloque tout mon projet. Merci d’avance.

  46. Sabine Hansen  Surfe sur Opera Opera 9.64 avec Windows Windows XP
    16 juillet 2011 @ 21:43
    46

    Jaaaaa… so habe ich mir das hier vorgestellt :D Kann mich dann ja bei http://www.Flirts-and-more.de abmelden, die sind mir da irgenwie zu versaut drauf.

  47. Avec quoi il marche ton serveur ? | Aldarone.fr  Surfe sur WordPress WordPress 3.2.1
    03 octobre 2011 @ 10:58
    47

    […] Quand j’ai commencé, c’était un LAMP classique (Ubuntu LTS server, Apache2, Mysql et Php). Assez rapidement j’ai eu envie d’optimiser un peu tout ça donc j’ai rajouté un Nginx qui envoyait tous les fichiers statiques (En me basant sur cet excellent tuto de PapyGeek: Optimiser son serveur web avec Nginx) […]

  48. Gilles  Surfe sur Mozilla Firefox Mozilla Firefox 8.0 avec Windows Windows 7
    17 novembre 2011 @ 15:58
    48

    Bonjour,
    Ton article est intéressant. Je me pose une question
    Dans ton exemple php est embarqué comme module d’apache ou apache est en mode worker et php en fast cgi?
    Plus généralement est’il intéressante de mettre nginx comme cache pour les fichiers statique et apache en mode worker qui communique avec php5 fpm en fast cgi ?
    En tout cas merci pour ton blog qui est une mine d’informations
    Gilles

  49. Quelles évolutions à venir pour Wordpress ? – Evan Salomon d’Automattic | ConseilsMarketing.fr  Surfe sur WordPress WordPress 3.3.2
    03 juillet 2012 @ 9:15
    49

    […] existe aussi des astuces comme par exemple d’utiliser NgineX (voir ce lien) sur son […]

  50. faye reagan  Surfe sur Mozilla Firefox Mozilla Firefox 21.0 avec Windows Windows XP
    29 mai 2013 @ 11:57
    50

    Pretty good post.
    Continuez votre bon travail.

  51. adf  Surfe sur Mozilla Firefox Mozilla Firefox 29.0 avec Windows Windows 7
    21 mai 2014 @ 6:58
    51

    http://online–porno.com/

PapyGeek sait où doit aller la pièce "Qui-Sert-A-Rien" dans les meubles Ikea. +