<?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>No pain no gain &#187; nginx</title>
	<atom:link href="http://www.dikant.de/category/nginx/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dikant.de</link>
	<description>Personal blog of Peter Dikant</description>
	<lastBuildDate>Sun, 23 May 2010 20:57:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Running Mercurial with FastCGI in nginx</title>
		<link>http://www.dikant.de/2009/07/29/running-mercurial-with-fastcgi-in-nginx/</link>
		<comments>http://www.dikant.de/2009/07/29/running-mercurial-with-fastcgi-in-nginx/#comments</comments>
		<pubDate>Wed, 29 Jul 2009 19:07:45 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[nginx]]></category>
		<category><![CDATA[FastCGI]]></category>
		<category><![CDATA[Mercurial]]></category>

		<guid isPermaLink="false">http://www.dikant.de/?p=88</guid>
		<description><![CDATA[Mercurial is a so called DRCS (Distributed Revision Control System). I have been using Subversion for a couple of years, both at work and for my own projects. Now I thought it was about time to try something different. But &#8230; <a href="http://www.dikant.de/2009/07/29/running-mercurial-with-fastcgi-in-nginx/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.selenic.com/mercurial/"><img src="http://www.dikant.de/wp-content/uploads/2009/07/logo-droplets-200.png" alt="logo-droplets-200" title="logo-droplets-200" width="100" height="120" class="alignleft size-thumbnail wp-image-91" /></a> <a href="http://www.selenic.com/mercurial/">Mercurial</a> is a so called DRCS (Distributed Revision Control System). I have been using <a href="http://subversion.tigris.org/">Subversion</a> for a couple of years, both at work and for my own projects. Now I thought it was about time to try something different.</p>
<p>But first, why do I want to switch from SVN to Mercurial? Basically the most appealing argument for me was the fact, that with Mercurial I am able to work offline with my repository. Besides that, I always had issues with the way SVN was handling tags and branches. Especially merging changes from a branch back into the trunk was always a pain. I did not need to use that functionality often but when I did, I always ended up doing it twice, because I could not remember which way to do it right.</p>
<p><span id="more-88"></span></p>
<p>So, in this article I will describe my setup of Mercurial served via FastCGI behind the nginx webserver. The approach is similar to the integration of PHP into nginx. You need the spawn-fcgi tool from the <a href="http://www.lighttpd.net/">lighttpd</a> distribution. The following steps should work on a recent Debian or Ubuntu distribution.</p>
<p>The first step is to install Mercurial and some necessary libraries to create the fcgi-wrapper for Mercurial:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">aptitude</span> <span style="color: #c20cb9; font-weight: bold;">install</span> mercurial python-flup</pre></div></div>

<p>Now you can already start defining your Mercurial repositories. Here are some steps to create a small example repository:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> <span style="color: #000000; font-weight: bold;">/</span>tmp
hg init hgtest
<span style="color: #7a0874; font-weight: bold;">cd</span> hgtest
<span style="color: #7a0874; font-weight: bold;">echo</span> <span style="color: #ff0000;">&quot;Hello world.&quot;</span> <span style="color: #000000; font-weight: bold;">&gt;</span> readme.txt
hg add readme.txt
hg commit <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;Initial commit&quot;</span></pre></div></div>

<p>You now have a Mercurial repository with a single file. The command <code>hg log</code> should show you a single changeset with our commit comment.</p>
<p>Now, let&#8217;s start configuring nginx to integrate Mercurial. We will use FastCGI talk connect Mercurial to nginx. User authentication will be done via nginx. It is a good idea to use HTTPS for communication with Mercurial, but we will focus on a standard HTTP setup.</p>
<p>Let&#8217;s setup a virtual host for Mercurial. Open <code>/etc/nginx/sites-available/your_domain_name</code> and add the following server definition:</p>

<div class="wp_syntax"><div class="code"><pre class="nginx" style="font-family:monospace;">server {
        listen 80;
        server_name YOUR_MERCURIAL_DOMAIN;
&nbsp;
        location / {
                auth_basic &quot;Secure Login&quot;;
                auth_basic_user_file /tmp/mercurial_users;
                fastcgi_pass 127.0.0.1:9001;
                fastcgi_param SCRIPT_FILENAME /tmp$fastcgi_script_name;
                fastcgi_param PATH_INFO $uri;
                fastcgi_param REMOTE_USER $remote_user;
                include fastcgi_params;
        }       
}</pre></div></div>

<p>The above settings will setup a new virtual host, where all traffic is redirected to the Mercurial FastCGI wrapper. It is important that you forward the <code>PATH_INFO</code> and <code>REMOTE_USER</code> variables. Mercurial will not work correctly without these.</p>
<p>Now reload the nginx configuration:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>nginx reload</pre></div></div>

<p>And create the password file:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">htpasswd <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>mercurial_users MYLOGIN</pre></div></div>

<p>Mercurial uses a central configuration file. In this file we can specify locations for our mercurial repositories. The following file will enable all mercurial repositories found in the <code>/tmp</code> directory. It also changes the theme to <code>gitweb</code> which is a bit clearer than the default theme. Create the file <code>/tmp/hgweb.config</code> with the following contents:</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>collections<span style="">&#93;</span></span>
/tmp <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> /tmp</span>
&nbsp;
<span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>web<span style="">&#93;</span></span>
<span style="color: #000099;">style</span> <span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;"> gitweb</span>
<span style="color: #000099;">baseurl</span> <span style="color: #000066; font-weight:bold;">=</span></pre></div></div>

<p>Mercurial uses a second configuration file for each repository where you may specify details about the repository and security settings like who may push changes into the repository. The configuration should be placed into the file <code>/tmp/hgtest/.hg/hgrc</code> and could look like this:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>web<span style="color: #7a0874; font-weight: bold;">&#93;</span>
contact = YOUR NAME
description = DESCRIPTION OF PROJECT
style = gitweb
push_ssl = <span style="color: #c20cb9; font-weight: bold;">false</span>
allow_archive = bz2 gz <span style="color: #c20cb9; font-weight: bold;">zip</span>
allow_push = LOGIN_NAME</pre></div></div>

<p>Now we need to grab the following script from the Mercurial repository and place it into the <code>/tmp</code> directory: <a href="http://selenic.com/repo/hg/raw-file/tip/contrib/hgwebdir.fcgi">http://selenic.com/repo/hg/raw-file/tip/contrib/hgwebdir.fcgi</a>. Now edit this file and replace the line <code>WSGIServer(hgwebdir('hgweb.config')).run()</code> with <code>WSGIServer(hgwebdir('/tmp/hgweb.config')).run()</code>.</p>
<p>The last step is to set the correct filesystem rights for your repository:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">chown</span> <span style="color: #660033;">-R</span> www-data.www-data <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>hgtest</pre></div></div>

<p>That&#8217;s it. Now we can start the FastCGI process via:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">spawn-fcgi <span style="color: #660033;">-a</span> 127.0.0.1 <span style="color: #660033;">-p</span> <span style="color: #000000;">9001</span> <span style="color: #660033;">-u</span> www-data <span style="color: #660033;">-g</span> www-data <span style="color: #660033;">-f</span> <span style="color: #000000; font-weight: bold;">/</span>tmp<span style="color: #000000; font-weight: bold;">/</span>hgwebdir.fcgi <span style="color: #660033;">-P</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>fastcgi-mercurial.pid <span style="color: #660033;">-C</span> <span style="color: #000000;">1</span></pre></div></div>

<p>It makes sense to write the above line into <code>/etc/rc.local</code> so that it will start up automatically when you reboot the server.</p>
<p>Further information about configuring your Mercurial server can be found in the <a href="http://mercurial.selenic.com/wiki/PublishingRepositories">Mercurial Wiki</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dikant.de/2009/07/29/running-mercurial-with-fastcgi-in-nginx/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Nginx rewrite rules for SilverStripe CMS</title>
		<link>http://www.dikant.de/2009/06/20/nginx-rewrite-rules-for-silverstripe-cms/</link>
		<comments>http://www.dikant.de/2009/06/20/nginx-rewrite-rules-for-silverstripe-cms/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 14:07:32 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://www.dikant.de/?p=85</guid>
		<description><![CDATA[If you are using Nginx with a configuration that is directly serving php pages via FastCGI, you need to adapt the rewrite rules to Nginx. In the case of the CMS-system SilverStripe this is not really straight forward. The original &#8230; <a href="http://www.dikant.de/2009/06/20/nginx-rewrite-rules-for-silverstripe-cms/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>If you are using Nginx with a configuration that is directly serving php pages via FastCGI, you need to adapt the rewrite rules to Nginx. In the case of the CMS-system <a href="http://www.silverstripe.org/">SilverStripe</a> this is not  really straight forward. The original rewrite definition in the <code>.htaccess</code> file looks like this:</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">&lt;<span style="color: #000000; font-weight:bold;">IfModule</span> mod_rewrite.c&gt;
<span style="color: #00007f;">RewriteEngine</span> <span style="color: #0000ff;">On</span>
<span style="color: #00007f;">RewriteBase</span> /
&nbsp;
<span style="color: #00007f;">RewriteCond</span> %{REQUEST_URI} !(\.gif)|(\.jpg)|(\.png)|(\.css)|(\.js)|(\.php)$
&nbsp;
<span style="color: #00007f;">RewriteCond</span> %{REQUEST_URI} ^(.*)$
<span style="color: #00007f;">RewriteCond</span> %{REQUEST_FILENAME} !-f
<span style="color: #00007f;">RewriteRule</span> .* sapphire/main.php?url=%1&amp;%{QUERY_STRING} [L]
&lt;/<span style="color: #000000; font-weight:bold;">IfModule</span>&gt;</pre></div></div>

<p>So every file which does not end in .gif, .jpg, .png, .css, .js and .php and where the file does not exist will be rewritten.</p>
<p>I chose a somehow stripped down version of these rules which looks in Nginx notation like this:</p>

<div class="wp_syntax"><div class="code"><pre class="nginx" style="font-family:monospace;">if (!-f $request_filename) {
    rewrite ^/(.*?)(\?|$)(.*)$ /sapphire/main.php?url=$1&amp;$3 last;
}</pre></div></div>

<p>If a requested file is not found, the rewriting engine will parse the request string for all elements before a &#8216;?&#8217;. This substring will be pasted as the url parameter to main.php. Everything after &#8216;?&#8217; will be added as additional parameters. This rewrite rule seems to be working and I haven&#8217;t encountered any problems so far.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dikant.de/2009/06/20/nginx-rewrite-rules-for-silverstripe-cms/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nginx as a reverse proxy for Apache</title>
		<link>http://www.dikant.de/2008/07/10/nginx-as-a-reverse-proxy-for-apache/</link>
		<comments>http://www.dikant.de/2008/07/10/nginx-as-a-reverse-proxy-for-apache/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 20:56:27 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://www.dikant.de/?p=48</guid>
		<description><![CDATA[While Apache is a great server for delivering dynamic content and especially hosting PHP-based websites, it has a high memory footprint and a high overhead when forking new worker processes during high server load. In this article I will describe &#8230; <a href="http://www.dikant.de/2008/07/10/nginx-as-a-reverse-proxy-for-apache/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>While Apache is a great server for delivering dynamic content and especially hosting PHP-based websites, it has a high memory footprint and a high overhead when forking new worker processes during high server load. In this article I will describe how you can use the <a href="http://nginx.net">nginx</a> web server as a <a href="http://en.wikipedia.org/wiki/Reverse_proxy">reverse proxy</a> for your Apache to deliver static files instead of Apache. Nginx has a very small memory footprint and can deliver static files lightning fast.</p>
<p>The idea behind this setup is that nginx will listen on port 80 for incoming connections, identify whether the client requests a static file or a dynamic webpage. In case of a static file it will deliver the file itself. In case of a dynamic request it will forward that request to the Apache server. </p>
<p><span id="more-48"></span></p>
<p>So let&#8217;s get started. First we need to download and unzip the lates stabel version of nginx. Currently this is verions 0.6.32. Compilation and installation is a done with the usual steps:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">.<span style="color: #000000; font-weight: bold;">/</span>configure
<span style="color: #c20cb9; font-weight: bold;">make</span>
<span style="color: #c20cb9; font-weight: bold;">make</span> <span style="color: #c20cb9; font-weight: bold;">install</span></pre></div></div>

<p>This will install nginx in the directory <code>/usr/local/nginx</code>. I usually like to have all my configuration files under <code>/etc</code>, so let&#8217;s copy the configuration folder over:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">cp</span> <span style="color: #660033;">-r</span> <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>conf <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nginx</pre></div></div>

<p>The sample configuration file <code>nginx.conf</code> is well suited as a starting point. I would recommend to uncomment / change the following settings in the main section:</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">user</span> www-data www-data;
worker_processes <span style="color: #ff0000;">2</span>;
pid /var/run/nginx.pid;</pre></div></div>

<p>In the http-section you could alter the following settings:</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">tcp_noauth <span style="color: #0000ff;">on</span>;
gzip <span style="color: #0000ff;">on</span>;</pre></div></div>

<p>The English nginx wiki contains a very good <a href="http://wiki.codemongers.com/NginxModules">documentation</a> on these settings.</p>
<p>Nginx has full support for name based virtual hosts and you need to create a server-section in the config for every virtual host that is configured in Apache. But first create a new configuration file <code>/etc/nginx/proxy.conf</code> which contains the basic proxy settings as found in the nginx wiki:</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">proxy_redirect          <span style="color: #0000ff;">off</span>;
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   <span style="color: #ff0000;">90</span>;
proxy_send_timeout      <span style="color: #ff0000;">90</span>;
proxy_read_timeout      <span style="color: #ff0000;">90</span>;
proxy_buffers           <span style="color: #ff0000;">32</span> 4k;</pre></div></div>

<p>These settings will be reused in every virtual host. The default virtual host is used as fallback in case no specific configuration for that virtual host can be found. To configure this default host, replace the server-section in the file <code>/etc/nginx.conf</code> with the following block:</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">server {
    <span style="color: #00007f;">listen</span>       XXX.XXX.XXX.XXX:<span style="color: #ff0000;">80</span> default;
    server_name  _;
    access_log /var/log/nginx/default.access.log main;
&nbsp;
    <span style="color: #00007f;">location</span> / {
        proxy_pass http://127.0.0.1:<span style="color: #ff0000;">80</span>;
        <span style="color: #00007f;">include</span> /etc/nginx/proxy.conf;
   }
}</pre></div></div>

<p>Replace <code>XXX.XXX.XXX.XXX</code> with the extern IP address of the server. The above configuration is a pure proxy configuration which will pass all the traffic to the Apache server that is listening on <code>127.0.0.1:80</code>.</p>
<p>To be flexible in the virtual host configuration, I like to maintain one configuration file per virtual host in a separate directory. We can include all configuration files from a certain directory into the nginx configuration by adding the following line after the server-section:</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">include</span> /etc/nginx/sites-enabled/*;</pre></div></div>

<p>So every time you want to setup a new virtual host, you just need to add a new configuration file to the directory <code>/etc/nginx/sites-enabled</code>. Here is a template for that file:</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">server {
    <span style="color: #00007f;">listen</span> XXX.XXX.XXX.XXX:<span style="color: #ff0000;">80</span>;
    server_name foobar.com www.foobar.com;
&nbsp;
    <span style="color: #00007f;">location</span> / {
        proxy_pass http://127.0.0.1:<span style="color: #ff0000;">80</span>;
        <span style="color: #00007f;">include</span> /etc/nginx/proxy.conf;
    }
&nbsp;
    <span style="color: #00007f;">location</span> ~* ^.+.(jpe?g|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|swf|avi|mp3)$ {
        expires 30d;
        root /var/www/foobar.com/htdocs;
    }
}</pre></div></div>

<p>This configuration will setup the virtual host <code>foobar.com</code>. You can define all alias addresses with the configuration directive <code>server_name</code>. All requests that match one of the above file extensions will be delivered directly by nginx from the directory <code>/var/www/foobar.com/htdocs</code>. All other requests are forwarded to the Apache server.</p>
<p>Before nginx can be started we need to make sure that Apache only listens on the address <code>127.0.0.1</code> for requests and not on the external IP address. In Debian this is done in <code>/etc/apache2/ports.conf</code>. Change this file to:</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">Listen</span> 127.0.0.1:<span style="color: #ff0000;">80</span></pre></div></div>

<p>Also make sure, that the VirtualHost directives in the Apache configuration files do not include an IP address. They should look like this:</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;">&lt;<span style="color: #000000; font-weight:bold;">VirtualHost</span> *:<span style="color: #ff0000;">80</span>&gt;
    <span style="color: #00007f;">ServerName</span> foobar.com
...
&lt;/<span style="color: #000000; font-weight:bold;">VirtualHost</span>&gt;</pre></div></div>

<p>The directive NameVirtualHost should look like this (also without an IP address):</p>

<div class="wp_syntax"><div class="code"><pre class="apache" style="font-family:monospace;"><span style="color: #00007f;">NameVirtualHost</span> *:<span style="color: #ff0000;">80</span></pre></div></div>

<p>Now you can restart Apache:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>init.d<span style="color: #000000; font-weight: bold;">/</span>apache2 restart</pre></div></div>

<p>And start nginx:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>sbin<span style="color: #000000; font-weight: bold;">/</span>nginx <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>nginx<span style="color: #000000; font-weight: bold;">/</span>nginx.conf</pre></div></div>

<p>You can reload the nginx configuration without stopping nginx:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">kill</span> <span style="color: #660033;">-HUP</span> <span style="color: #000000; font-weight: bold;">`</span><span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">/</span>var<span style="color: #000000; font-weight: bold;">/</span>run<span style="color: #000000; font-weight: bold;">/</span>nginx.pid<span style="color: #000000; font-weight: bold;">`</span></pre></div></div>

<p>On my server some quick benchmarks have shown that nginx can deliver static content up to 10 times faster than Apache. The amazing thing is that not only did it deliver the content faster, there was nearly no impact on CPU or memory. With combining Apache and nginx we can have the best of both worlds, nginx for static files and Apache for dynamic content.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dikant.de/2008/07/10/nginx-as-a-reverse-proxy-for-apache/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
