<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Diablotins &#38; Démons Web &#187; HTTP</title>
	<atom:link href="http://majinboo.org/index.php/category/http/feed/" rel="self" type="application/rss+xml" />
	<link>http://majinboo.org</link>
	<description></description>
	<lastBuildDate>Tue, 22 Jun 2010 09:47:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Plugin Firefox ASNumber (Compatible Firefox 3.5)</title>
		<link>http://majinboo.org/index.php/2009/08/plugin-firefox-asnumber-compatible-firefox-35/</link>
		<comments>http://majinboo.org/index.php/2009/08/plugin-firefox-asnumber-compatible-firefox-35/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 16:10:38 +0000</pubDate>
		<dc:creator>majinboo</dc:creator>
				<category><![CDATA[Geek]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[Hacks]]></category>

		<guid isPermaLink="false">http://majinboo.org/?p=61</guid>
		<description><![CDATA[Parmi les innombrables plugins Firefox que j&#8217;ai pris l&#8217;habitude d&#8217;utiliser. Il y a ASNumber, ce plugin permet de faire la correspondance entre un site web et l&#8217;AS qui l&#8217;héberge. Pour simplifier, l&#8217;AS est un des identifiants réseau de l&#8217;hébergeur.
Malheureusement, je suis passé sur la dernière version de Firefox et vu qu&#8217;aucune mise à jour n&#8217;a [...]]]></description>
			<content:encoded><![CDATA[<p>Parmi les innombrables plugins Firefox que j&#8217;ai pris l&#8217;habitude d&#8217;utiliser. Il y a <a href="https://addons.mozilla.org/en-US/firefox/addon/2072" target="_blank">ASNumber</a>, ce plugin permet de faire la correspondance entre un site web et l&#8217;<a href="http://fr.wikipedia.org/wiki/Autonomous_System" target="_blank">AS</a> qui l&#8217;héberge. Pour simplifier, l&#8217;AS est un des identifiants réseau de l&#8217;hébergeur.</p>
<p>Malheureusement, je suis passé sur la dernière version de Firefox et vu qu&#8217;aucune mise à jour n&#8217;a été effectué par le mainteneur du plugin, le plugin n&#8217;était plus utilisable. Heureusement pour moi, les plugins Firefox sont en fait de simple fichiers ZIP contenant une description et une archive JAR qui contient des fichiers javascripts et css. Après quelques modifications, j&#8217;ai pu réaliser une version du plugin compatible avec Firefox 3.5. Le mainteneur a été contacté mais pour les impatients la version modifiée du plugin est disponible à cette adresse : <a href="http://mirror.labs.fr/pub/Firefox/asnumber_35.xpi" target="_blank">http://mirror.labs.fr/pub/Firefox/asnumber_35.xpi</a>.</p>
<p><strong>Astuce</strong> : Si vous voullez heberger des extensions Firefox sur votre propre serveur, il ne faut pas oublier d&#8217;associer l&#8217;extension <em>.xpi</em> au mime-type <em>application/x-xpinstall</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://majinboo.org/index.php/2009/08/plugin-firefox-asnumber-compatible-firefox-35/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comment retirer la passphrase d&#8217;un certificat SSL ?</title>
		<link>http://majinboo.org/index.php/2009/03/comment-retirer-la-passphrase-dun-certificat-ssl/</link>
		<comments>http://majinboo.org/index.php/2009/03/comment-retirer-la-passphrase-dun-certificat-ssl/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 07:32:18 +0000</pubDate>
		<dc:creator>majinboo</dc:creator>
				<category><![CDATA[HTTP]]></category>

		<guid isPermaLink="false">http://majinboo.org/?p=18</guid>
		<description><![CDATA[Une petite astuce bien pratique&#160;:
 openssl rsa -in server.key -out server.key.unencrypted
J&#8217;en profite pour faire un peu de pub pour StartSSL qui propose des certificats SSL gratuits mais dont l&#8217;interface impose de mettre une passphrase sur le certificat (ces certificats ne sont pas malheuresement pas reconnus par IE)
]]></description>
			<content:encoded><![CDATA[<p>Une petite astuce bien pratique&nbsp;:</p>
<pre> openssl rsa -in server.key -out server.key.unencrypted</pre>
<p>J&#8217;en profite pour faire un peu de pub pour <a href="http://www.startssl.com/">StartSSL</a> qui propose des certificats SSL gratuits mais dont l&#8217;interface impose de mettre une passphrase sur le certificat (ces certificats ne sont pas malheuresement pas reconnus par IE)</p>
]]></content:encoded>
			<wfw:commentRss>http://majinboo.org/index.php/2009/03/comment-retirer-la-passphrase-dun-certificat-ssl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Les 5 extensions Firefox indispensables pour un Web Developper</title>
		<link>http://majinboo.org/index.php/2009/03/les-5-extensions-firefox-indispensables-pour-un-web-developper/</link>
		<comments>http://majinboo.org/index.php/2009/03/les-5-extensions-firefox-indispensables-pour-un-web-developper/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 07:31:22 +0000</pubDate>
		<dc:creator>majinboo</dc:creator>
				<category><![CDATA[HTTP]]></category>

		<guid isPermaLink="false">http://majinboo.org/?p=16</guid>
		<description><![CDATA[Une des raisons du succès de Firefox est le grand nombre d&#8217;extensions disponibles. Ces extensions permettent d&#8217;étendre les fonctionnalités du navigateur et il y en a vraiment pour tout les goûts. Dans cet article, nous présenterons 5 des extensions les plus utiles dans le cadre du developpement web.
FireBug
Cette extension permet de naviguer et de modifier [...]]]></description>
			<content:encoded><![CDATA[<p>Une des raisons du succès de Firefox est le grand nombre d&#8217;extensions disponibles. Ces extensions permettent d&#8217;étendre les fonctionnalités du navigateur et il y en a vraiment pour tout les goûts. Dans cet article, nous présenterons 5 des extensions les plus utiles dans le cadre du developpement web.</p>
<h3>FireBug</h3>
<p>Cette extension permet de naviguer et de modifier de manière intuitive l&#8217;ensemble des éléments d&#8217;une page web&nbsp;: code HTML, feuille de style CSS, et script JavaScripts. Les modifications se font directement dans le navigateur et sont appliquées immédiatement. Indispensable pour tester différentes mise en page ou pendant une phase de debug de JavaScript.<br />
<a href="https://addons.mozilla.org/fr/firefox/addon/1843">Lien de téléchargement</a></p>
<h3>YSlow</h3>
<p>Attention, cette extension ne fonctionne pas si FireBug n&#8217;est pas installé. Cette extension créée par Yahoo mesure les performances d&#8217;un site web (temps d&#8217;affichage d&#8217;une page, taille de la page) et propose des optimisations pertinentes basées sur les best-practices de Yahoo.<br />
<a href="https://addons.mozilla.org/fr/firefox/addon/5369">Lien de téléchargement</a></p>
<h3>HttpFox</h3>
<p>Très bon complément à FireBug, cette extension permet d&#8217;enregistrer l&#8217;ensemble du trafic HTTP. Cette approche systématique permet d&#8217;identifier de manière simple et exhaustive les requêtes les plus lentes.<br />
<a href="https://addons.mozilla.org/fr/firefox/addon/6647">Lien de téléchargement</a></p>
<h3>Firefox DNS Flusher</h3>
<p>Il n&#8217;est pas rare de devoir forcer des résolutions DNS lors des phases de développement ou de qualification d&#8217;une nouvelle version d&#8217;un site web. Forcer la résolutions d&#8217;un nom de domaine sur un serveur de test en modifiant le fichier <em>host</em> est aisée. Le problème est la cache DNS de Firefox. Cette extension permet de vider le cache de Firefox et surtout d&#8217;afficher l&#8217;adresse IP réellement utilisée pour l&#8217;affichage du site.<br />
<a href="https://addons.mozilla.org/fr/firefox/addon/7408">Lien de téléchargement</a></p>
<h3>Selenium IDE</h3>
<p>Les sites web étant de plus en plus aboutis au niveaux des fonctionnalités, les scenarii de test deviennent de plus en plus complexes. Selinum IDE permet d&#8217;aider le developpeur web dans la création et l&#8217;execution d&#8217;un scenario de test en permettant d&#8217;automatiser la navigation sur un site web.<br />
<a href="https://addons.mozilla.org/fr/firefox/addon/2079">Lien de téléchargement</a></p>
<p>Cette liste n&#8217;est bien sur pas exhaustive mais permet d&#8217;avoir un bon point de départ.</p>
]]></content:encoded>
			<wfw:commentRss>http://majinboo.org/index.php/2009/03/les-5-extensions-firefox-indispensables-pour-un-web-developper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gestion sécurisée des téléchargement avec Lighttpd</title>
		<link>http://majinboo.org/index.php/2008/12/gestion-securisee-des-telechargement-avec-lighttpd/</link>
		<comments>http://majinboo.org/index.php/2008/12/gestion-securisee-des-telechargement-avec-lighttpd/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 07:27:37 +0000</pubDate>
		<dc:creator>majinboo</dc:creator>
				<category><![CDATA[HTTP]]></category>

		<guid isPermaLink="false">http://majinboo.org/?p=11</guid>
		<description><![CDATA[Are you Token to me&#160;?
Le but de cet article est d&#8217;aborder l&#8217;utilisation du mod_secdownload de Lighttpd. Ce module ne permet qu&#8217;un seul mode de protection basé sur l&#8217;expiration des URLs au bout d&#8217;une durée déterminée par l&#8217;administrateur. Une autre approche serait de créer des jetons qui expirent quand ils sont utilisés. Cette approche sera brièvement [...]]]></description>
			<content:encoded><![CDATA[<h3>Are you Token to me&nbsp;?</h3>
<p>Le but de cet article est d&#8217;aborder l&#8217;utilisation du <em>mod_secdownload</em> de Lighttpd. Ce module ne permet qu&#8217;un seul mode de protection basé sur l&#8217;expiration des URLs au bout d&#8217;une durée déterminée par l&#8217;administrateur. Une autre approche serait de créer des jetons qui expirent quand ils sont utilisés. Cette approche sera brièvement abordée à la fin de cet article.</p>
<p>Le principe de fonctionnement du module <em>mod_secdownload</em> est relativement simple, l&#8217;URL doit contenir&nbsp;: le chemin relatif du fichier à télécharger, la date de création de l&#8217;URL et une somme de contrôle servant à valider l&#8217;URL. Si la date de création est jugée trop loin dans le passé, un code d&#8217;erreur 410 est renvoyé. Si la somme de contrôle est invalide, un code d&#8217;erreur 403 est renvoyé. Si la date de création est suffisamment récente et que la somme de contrôle est correcte, le fichier est envoyé au client.</p>
<h3>Gentlemen start our engines</h3>
<p>Le module <em>mod_secdownload</em> est inclus dans la distribution de base de Lighttpd. Il faut néanmoins veiller à ce que le module soit chargé au lancement de Lighttpd. Ce qui donne dans <em>lighttpd.conf</em>&nbsp;:</p>
<pre>

server.modules              = (
...
                                &quot;mod_secdownload&quot;,
...
)
</pre>
<p>La configuration du module se fait grâce à 4 paramètres&nbsp;:</p>
<pre>
  secdownload.secret = &quot;MonSecret&quot;
  secdownload.document-root = &quot;/path/to/protected/files&quot;
  secdownload.uri-prefix = &quot;/telechargement/&quot;

  secdownload.timeout = 30
</pre>
<ul>
<li>Le paramètre <em>secret</em> sert lors du calcul de la somme de contrôle. La sécurité de la protection est basée sur cette chaine de caractères, il est donc important de bien la choisir et de ne pas la divulguer.</li>
<li>Le paramètre <em>document-root</em> sert à définir le chemin absolu du dossier contenant les données à proteger.</li>
<li>Le paramètre <em>uri-prefix</em> est similaire aux directives <em>Alias</em> d&#8217;Apache. Chaque appel du type <em>mondomaine.tld/uri-prefix</em> sera traité par le module <em>mod_secdownload</em></li>
<li>Le paramètre <em>timeout</em> permet quand à lui de définir la durée en secondes pendant laquelle l&#8217;URL est valide</li>
</ul>
<h3>Et maintenant, je fais quoi&nbsp;?</h3>
<p>Une fois Lighttpd configuré, il faut que l&#8217;application Internet soit en mesure de générer des liens valides de téléchargements. Des implémentations simples sont disponibles sur le <a href="http://redmine.lighttpd.net/wiki/lighttpd/Docs:ModSecDownload" hreflang="en">site de Lighttpd</a>. Il est important de bien comprendre l&#8217;algorithme sous-jacent, une fois l&#8217;algorithme maîtrisé la création de liens de téléchargements est relativement aisée.</p>
<p>L&#8217;URL de téléchargement sera de la forme suivante&nbsp;:</p>
<pre>
&lt;mondomaine.tld&gt;/&lt;uri-prefix&gt;/&lt;token&gt;/&lt;timestamp&gt;/&lt;chemin-relatif&gt;
</pre>
<p>Le <em>timestamp</em> doit être au format Hexadecimal. Le <em>token</em> est la somme MD5 de la concaténation du secret définit dans la configuration Lighttpd, du chemin relatif du fichier (en y laissant le / du début du chemin) et du timestamp au format hexadecimal.</p>
<p>Le script générant les URLs de téléchargement a donc besoin de connaître le secret. Le token varie en fonction du temps et du fichier à télécharger. Il faut donc faire attention aux deux points suivant lors de l&#8217;implémentation du générateur d&#8217;URL de téléchargement&nbsp;:</p>
<ul>
<li>Le secret doit être stocké de manière sécurisée (fichier avec droits limités par exemple) afin de ne pas compromettre la protection</li>
<li>Le générateur d&#8217;URLs doit avoir son horloge synchronisée avec le serveur de téléchargement</li>
</ul>
<h3>Et si je veux faire autrement&nbsp;?</h3>
<p>Une autre approche serait de créer un GUID (Global Unique ID) lors de la création de l&#8217;URL, stocker cet ID et de l&#8217;invalider une fois qu&#8217;il a été utilisé. Cette solution est plus complexe à mettre en place&nbsp;: il n&#8217;existe pas à ma connaissance de module Lighttpd permettant de mettre en place ce genre de scénario. Le téléchargement devra alors être géré par l&#8217;interpréteur  PHP/Ruby/Python/&#8230; . De plus le stockage des IDs nécessite a priori l&#8217;utilisation d&#8217;une base de données.</p>
<p>Voici de manière synthétique les avantages et inconvénients des deux solutions&nbsp;:</p>
<ul>
<li>mod_secdownload&nbsp;: la vérification de la validité de l&#8217;URL est rapide et le téléchargement bénéficie des différentes optimisation de Lighttpd (IO asynchrones par exemple). Par contre, une URL est valide pour tout les client pendant le laps de temps défini dans la configuration. Cette solution est performante mais plus limitée. De plus la sécurité de l&#8217;ensemble de la solution est compromise dès lors que le secret est connu par un tiers.</li>
<li>GUID par téléchargement&nbsp;: Cette solution est plus sécurisée, pour compromettre la solution, il faudrait obtenir un accès en écriture au système de stockage des IDs de téléchargements. Cependant, cette solution est plus lourde à mettre en place et moins performante car elle nécessite l&#8217;utilisation d&#8217;un interpréteur PHP/Ruby/Python/&#8230; lors du téléchargement du fichier.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://majinboo.org/index.php/2008/12/gestion-securisee-des-telechargement-avec-lighttpd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Accellerer Apache avec Lighttpd sans passer par la case ré-ecriture de code</title>
		<link>http://majinboo.org/index.php/2008/12/accellerer-apache-avec-lighttpd-sans-passer-par-la-case-re-ecriture-de-code/</link>
		<comments>http://majinboo.org/index.php/2008/12/accellerer-apache-avec-lighttpd-sans-passer-par-la-case-re-ecriture-de-code/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 07:21:18 +0000</pubDate>
		<dc:creator>majinboo</dc:creator>
				<category><![CDATA[HTTP]]></category>

		<guid isPermaLink="false">http://majinboo.org/?p=6</guid>
		<description><![CDATA[Lighttpd est un très bon serveur web mais force est de constater qu&#8217;il est difficile de se passer d&#8217;apache (en particulier à cause des fichiers .htaccess qui ne sont pas supportés par Lighttpd). Nous allons donc voir comment mettre en place un serveur Lighttpd qui servira du contenu statique et dynamique tout en faisant office [...]]]></description>
			<content:encoded><![CDATA[<p>Lighttpd est un très bon serveur web mais force est de constater qu&#8217;il est difficile de se passer d&#8217;apache (en particulier à cause des fichiers<em> .htaccess</em> qui ne sont pas supportés par Lighttpd). Nous allons donc voir comment mettre en place un serveur Lighttpd qui servira du contenu statique et dynamique tout en faisant office de proxy pour Apache quand l&#8217;utilisation de ce dernier est nécessaire.</p>
<h3>Vue d&#8217;ensemble de la solution</h3>
<ul>
<li>Lighttpd écoutera sur le port 80 et répondra donc à toutes les requêtes, il servira de reverse-proxy pour les requêtes destinées à Apache.</li>
<li>Apache écoutera sur le port 8080, il répondra à toutes les requêtes sur ce port. En production, il ne devrait appelé que par Lighttpd mais il sera possible de l&#8217;appeller depuis n&#8217;importe quel navigateur pendant une phase de Debug.</li>
<li>La configuration sera adaptable pour chaque VirtualHost, il sera envisageable de mettre en place 3 configurations différentes&nbsp;:</li>
<li>uniquement Lighttpd, dans le cas d&#8217;un site statique ou dynamique pouvant fonctionner sous Lighttpd, cette configuration est à privilegier</li>
<li>contenu statique servi par Lighttpd, contenu dynamique servi par Apache via le mod_proxy de Lighttpd. Cette solution est à utiliser pour améliorer les performances d&#8217;un site nécessitant Apache pour son contenu dynamique.</li>
<li>site uniquement servi par Apache via le mod_proxy de Lighttpd. Cette solution n&#8217;est envisagée que pour des cas particuliers, elle est à éviter a priori.</li>
</ul>
<h3>Modification de la configuration d&#8217;Apache</h3>
<p>Afin que le serveur Apache écoute sur le port 8080, il faut modifier la directive <em>Listen 80</em> en <em>Listen 8080</em> de son fichier de configuration. Il faura aussi modifier les configuration des différents VirtualHost pour qu&#8217;ils soient pris sur le port 8080. Enfin, vu qu&#8217;en fonctionnement nominal, le serveur ne sera interrogé que sur du contenu dynamique et page par page, on pourra désactiver le KeepAlive en plaçant la directive <em>KeepAlive Off</em>.</p>
<h3>Configuration de base de Lighttpd</h3>
<p>La configuration de Lighttpd est en général effectuée dans un seul fichier <em>lighttpd.conf</em>. Dans notre cas, nous avons besoin d&#8217;activer les modules suivants&nbsp;:</p>
<ul>
<li>mod_proxy&nbsp;: ce module permettra de faire fonctionner Lighttpd en tant que reverse-proxy.</li>
<li>mod_status&nbsp;: ce module nous permettra de suivre l&#8217;état du serveur</li>
<li>mod_auth&nbsp;: ce module permettra de limiter l&#8217;accès au server-status</li>
</ul>
<p>Pour ajouter un module, il suffit de décommenter la ligne contenant le nom du module dans le fichier de configuration.</p>
<p>Pour activer le server-status, il suffit d&#8217;ajouter la directive suivante&nbsp;:</p>
<pre> status.status-url          = "/server-status"</pre>
<p>Il est quand même plus sur de limiter l&#8217;accès au server-status, il faut créer un fichier <em>.htpasswd</em> avec les identifiants et mot de passes des utilisateurs autorisés à se connecter au server-status (l&#8217;executable <em>htpasswd</em> d&#8217;Apache convient parfaitement pour cette tâche). il faut ensuite ajouter les lignes suivantes à la configuration de Lighttpd (dans mon cas, le fichier <em>.htpasswd</em> est stocké dans le dossier <em>/usr/local/www</em>)&nbsp;:</p>
<pre> auth.backend = "htpasswd"
 auth.backend.htpasswd.userfile = "/usr/local/www/.htpasswd"
 auth.require = ( "/server-status" =&gt;
  (
      "method"  =&gt; "basic",
      "realm"   =&gt; "status",
      "require" =&gt; "valid-user"
  )
  )</pre>
<p>On peut ajouter une petite optimisation&nbsp;: l&#8217;utilisation d&#8217;un cache pour les appels <em>stat</em>&nbsp;:</p>
<pre> server.stat-cache-engine = "fam"</pre>
<h3>Ajout d&#8217;un VirtualHost servi uniquement par Lighttpd</h3>
<p>C&#8217;est le cas le plus simple et a priori le plus performant, il faut néanmoins être sur que l&#8217;application web hébergée sur le VirtualHost est totalement compatible avec Lighttpd.</p>
<pre> $HTTP<a href="&quot;host&quot;" title="&quot;host&quot;">"host"</a> =~ "test.labs.fr" {
     server.document-root = "/home/majinboo/sites/test"
     accesslog.filename = "/var/log/lighttpd/test-access.log"
 }</pre>
<h3>Ajout d&#8217;un VirtualHost Mixte&nbsp;: contenu statique servi par Lighttpd et contenu dynamique sous Apache</h3>
<p>Ce blog est propulsé par Dotclear, n&#8217;ayant que peu de retour sur la compatibilité de Dotclear avec Lighttpd, j&#8217;ai pour l&#8217;instant choisi de le faire fonctionner en configuration mixte. La stratégie est la suivante&nbsp;: pour qu&#8217;Apache soit appelé sur les URL non-statiques (qui sont la plupart du temps rewritées) on utilise un proxy uniquement pour les url qui ne terminent pas par une extension connue pour être celle d&#8217;un fichier statique.</p>
<p>Vu que le contenu sera servi pour moitié par Apache et pour l&#8217;autre moitié par Lighttpd, il faut configurer le virtualHost à la fois dans Apache et dans Lighttpd. Ce qui donne pour la configuration d&#8217;Apache quelque chose de relativement anodin&nbsp;:</p>
<pre> &lt;VirtualHost *:8080&gt;
     ServerAdmin majinboo@labs.fr
     DocumentRoot "/home/majinboo/sites/blog.majinboo.org"
     ServerName majinboo.org
     ServerAlias www.majinboo.org
     ServerAlias blog.majinboo.org
     ErrorLog "/var/log/httpd/majinboo.org-error.log"
     CustomLog "/var/log/httpd/majinboo.org-access_log" combined
 &lt;/VirtualHost&gt;</pre>
<p>Pour Lighttpd, la configuration est un poil plus complexe en raison de l&#8217;utlisation du mod_proxy&nbsp;:</p>
<pre> $HTTP<a href="&quot;host&quot;" title="&quot;host&quot;">"host"</a> =~ "majinboo.org" {
     server.document-root = "/home/majinboo/sites/blog.majinboo.org"
     accesslog.filename = "/var/log/lighttpd/majinboo.org-access.log"
     $HTTP<a href="&quot;url&quot;" title="&quot;url&quot;">"url"</a> !~ "\.(js|css|gif|jpg|png|ico|txt|swf|html|htm)$" {
       proxy.server  = ( "" =&gt; (
             ( "host" =&gt; "127.0.0.1", "port" =&gt; 8080 )
         )
         )
     }
 }</pre>
<h3>Ajout d&#8217;un VirtualHost entièrement managé par Apache</h3>
<p>Cette configuration peut par exemple être utile dans le cas d&#8217;un WebService qui sert des images générées par un script (captcha ou autre). Dans ce cas il faudra mettre la configuration du VirtualHost dans la configuration d&#8217;Apache et se contenter de tout rediriger vers Apache dans la configuration de Lighttpd, ce qui donne&nbsp;:</p>
<pre> $HTTP<a href="&quot;host&quot;" title="&quot;host&quot;">"host"</a> =~ "test2.labs.fr" {
     server.document-root = "/home/majinboo/sites/captchaServer"
     accesslog.filename = "/var/log/lighttpd/captcha-access.log"
     proxy.server  = ( "" =&gt; (
             ( "host" =&gt; "127.0.0.1", "port" =&gt; 8080 )
         )
         )
 }</pre>
<h3>Petit test de performances</h3>
<p>Le test consiste à lancer <a href="http://www.joedog.org/index/siege-home" hreflang="en">siege</a> en mode benchmark avec une liste d&#8217;URLs correspondant à la page d&#8217;accueil de ce blog. Pour ce test, 150 utilisateurs concurrents déroulent la liste d&#8217;URLs de manière séquentielle pendant 10 minutes. Le serveur qui est testé est un Bi Xeon Dual Coeurs avec 4 GB de RAM.</p>
<h2>Résultats avec Apache</h2>
<ul>
<li>Nombre de requêtes par seconde&nbsp;: 148</li>
<li>Load du serveur&nbsp;: 50</li>
<li>Mémoire libre&nbsp;: 2GB</li>
</ul>
<h2>Résultats avec la configuration mixte Lighttpd / Apache</h2>
<ul>
<li>Nombre de requêtes par seconde&nbsp;: 151</li>
<li>Load du serveur&nbsp;: 20</li>
<li>Mémoire libre&nbsp;: 2.3 GB</li>
</ul>
<p>On remarque que les performances brutes ne sont pas significativement meilleures avec Lighttpd, cependant le serveur est bien moins chargé avec la configuration mixte. Il est possible que ce soit la machine de test qui limite (une dédibox première génération).</p>
<h3>Possibilités d&#8217;amélioration qui feront l&#8217;objet d&#8217;un futur article</h3>
<p>Pour l&#8217;instant, le mod_proxy de Lighttpd interroge Apache à chaque requête. Un patch permet d&#8217;ajouter un mod_cache à Lighttpd qui permettrait d&#8217;augmenter les performances de la solution en servant le résultats de certaines requêtes destinées à Apache depuis un cache.</p>
<p>De plus PHP et postGreSQL qui sont utilisés par le blog ne sont pour l&#8217;instant pas optimisés. Il serait opportun d&#8217;optimiser leur configuration et d&#8217;ajouter le module eAccelerator à PHP.</p>
]]></content:encoded>
			<wfw:commentRss>http://majinboo.org/index.php/2008/12/accellerer-apache-avec-lighttpd-sans-passer-par-la-case-re-ecriture-de-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
