<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>lighty's life: Tag railsconf</title>
    <link>http://blog.lighttpd.net/articles/tag/railsconf</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>The New mod_proxy_core</title>
      <description>&lt;p&gt;One thing I heard from everyone at the railsconf was: &lt;i&gt;Please fix mod_proxy&lt;/i&gt;. In my talk I presented a look into the future and how mod_proxy will evolve in lighty 1.5.x, unification of the backend-plugin, .,.&lt;/p&gt;


	&lt;p&gt;Well, perhaps it will be a bit earlier than 1.5.0&lt;/p&gt;
&lt;p&gt;Over the last week and especially at this weekend I make big steps into the right direction:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;a string &lt;span class="caps"&gt;HTTP&lt;/span&gt;-response parser based on lemon used by all backend plugins (FastCGI, &lt;span class="caps"&gt;CGI&lt;/span&gt;, SCGI, Proxy)&lt;/li&gt;
		&lt;li&gt;all backends use a sliding window to send data. The data-stream in chunked and as soon as a chunk is finished it is freed or reused.&lt;/li&gt;
		&lt;li&gt;the network-code is only implemented once&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;But more important is the work on mod_proxy_core with this feature-set:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Unified core for all backends
  * failover, balancers, config, streaming, ... are shared&lt;/li&gt;
		&lt;li&gt;several protocols for FastCGI, &lt;span class="caps"&gt;CGI&lt;/span&gt;, SCGI and &lt;span class="caps"&gt;HTTP&lt;/span&gt;&lt;/li&gt;
		&lt;li&gt;Keep-Alive for FastCGI and &lt;span class="caps"&gt;HTTP&lt;/span&gt;&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;HTTP&lt;/span&gt;/1.1 (incl. chunked encoding to the backend)&lt;/li&gt;
		&lt;li&gt;queueing of connections in the plugin (instead of using the kernel for it)&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;HTTP&lt;/span&gt; over &lt;span class="caps"&gt;SSL&lt;/span&gt; to the backends&lt;/li&gt;
		&lt;li&gt;Host-Selection by hostname (auto-loadbalancing for multi-homed hosts)&lt;/li&gt;
		&lt;li&gt;Request/Response rewrite in the proxy-module before they are sent to the backends&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;b&gt;What is working up to now ?&lt;/b&gt;&lt;/p&gt;


	&lt;p&gt;Up to now I can use RR-balancing via &lt;span class="caps"&gt;HTTP&lt;/span&gt;/1.1 with keep-alive and chunked-encoding. As testbase I used http://cnn.com/ and http://www.stern.de/ for the RR-testing and http://php.net/ to test chunked encoding. All of them are contacted via &lt;span class="caps"&gt;HTTP&lt;/span&gt;/1.1 and use Keep-Alive.&lt;/p&gt;


	&lt;p&gt;I only specified the hostname, lighty resolved the hostname at startup and added all IPs to the LB-pool. .oO( Hey, it would be easy to add and remove IPs from this pool at runtime )&lt;/p&gt;


	&lt;p&gt;It was good to kill some old code on the way. The fd-event handling got a cleanup and more flexible in the handling. the old backend-plugins got simplified as the share more code, ... over all good weekend so far.&lt;/p&gt;


	&lt;p&gt;&lt;b&gt;What is missing ?&lt;/b&gt;&lt;/p&gt;


	&lt;p&gt;Failover handling and queueing is planned for tomorrow, process-spawning will be unified a bit later. mod_proxy_core will be part of 1.4.12 next to the old, well-known plugins for FastCGI, &lt;span class="caps"&gt;SCGI&lt;/span&gt;, CGI and &lt;span class="caps"&gt;HTTP&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;When the code for mod_proxy_core is commited I advise everyone to take a look at the code for it. It is very clean and well-documented and should be easy to read. ... if you know C. :)&lt;/p&gt;</description>
      <pubDate>Sat, 15 Jul 2006 21:06:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:f41b2260-ed8b-4080-b0cf-9819ca3500c2</guid>
      <author>jan</author>
      <link>http://blog.lighttpd.net/articles/2006/07/15/the-new-mod_proxy_core</link>
      <category>mod_proxy</category>
      <category>railsconf</category>
      <trackback:ping>http://blog.lighttpd.net/articles/trackback/1758</trackback:ping>
    </item>
  </channel>
</rss>
