<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Http2 on Notes</title>
    <link>https://www.simplicidade.org/tags/http2/index.xml</link>
    <description>Recent content in Http2 on Notes</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>melo@simplicidade.org (Pedro Melo)</managingEditor>
    <webMaster>melo@simplicidade.org (Pedro Melo)</webMaster>
    <copyright>(c) 2016 Pedro Melo.</copyright>
    <atom:link href="/tags/http2/index.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsuhhubbub.superfeedr.com/"/>
    
    <item>
      <title>Proxy software</title>
      <link>https://www.simplicidade.org/survival/proxy-software/</link>
      <pubDate>Fri, 21 Apr 2017 10:08:42 +0100</pubDate>
      <author>melo@simplicidade.org (Pedro Melo)</author>
      <guid>https://www.simplicidade.org/survival/proxy-software/</guid>
      <description>

&lt;p&gt;A small list of proxy software that I use, or that have crossed my radar.&lt;/p&gt;

&lt;h2 id=&#34;nginx&#34;&gt;nginx&lt;/h2&gt;

&lt;p&gt;A single stop solution for all your HTTP, HTTP/2, TCP proxy needs. This is my go-to software today, it covers 80% to 90% of my needs, in a single package with a common configuration language. Why run multiple services if a single one covers what you need&amp;hellip; Also, wicked fast. I really avoid going to others unless there is a clear need for it.&lt;/p&gt;

&lt;p&gt;The weakest point for &lt;a href=&#34;https://nginx.org&#34;&gt;nginx&lt;/a&gt; is that dynamic reconfiguration, specially of backend configurations, are only available with the paid version, &lt;a href=&#34;https://www.nginx.com/products/&#34;&gt;nginx Plus&lt;/a&gt;. But you can get a long way there with a small sidecar process that listens to service discovery updates, rewrites nginx configuration files, and asks nginx to reload them.&lt;/p&gt;

&lt;p&gt;nginx features that are rareley mentioned: you can upgrade the nginx version without downtime. I haven&amp;rsquo;t came across any other proxy software that does this. But admitelly I haven&amp;rsquo;t looked that hard either&amp;hellip;&lt;/p&gt;

&lt;p&gt;See also &lt;a href=&#34;http://tengine.taobao.org&#34;&gt;tengine&lt;/a&gt;, a nginx distribution originaly by &lt;a href=&#34;https://en.wikipedia.org/wiki/Taobao&#34;&gt;Taobao&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&#34;haproxy&#34;&gt;haproxy&lt;/h2&gt;

&lt;p&gt;&lt;a href=&#34;https://www.haproxy.org&#34;&gt;haproxy&lt;/a&gt; is the grand daddy of reverse proxies. Very easy to setup, simpler than nginx. Has a nice built-in HTTP status interface.&lt;/p&gt;

&lt;p&gt;At the moment, nginx does everything that I need that haproxy has, and I don&amp;rsquo;t need the extras that haproxy has that nginx lacks. If I already have nginx running it makes little sense to add another service. But if I just need plain TCP reverse proxy, then I prefer haproxy. It boild down to reducing the number of services I have to have running.&lt;/p&gt;

&lt;h2 id=&#34;varnish&#34;&gt;Varnish&lt;/h2&gt;

&lt;p&gt;Another classic. If you have strong caching needs, &lt;a href=&#34;https://varnish-cache.org&#34;&gt;Varnish&lt;/a&gt; is the software to use.&lt;/p&gt;

&lt;p&gt;Used to be he most flexible software in terms of configuration due to the use of very complete request routing language, VCL. But recent releases of haproxy, with Lua support, and nginx (either with Lua support on the &lt;a href=&#34;https://openresty.org/en/&#34;&gt;OpenResty&lt;/a&gt; version, or the new &lt;a href=&#34;https://www.nginx.com/blog/launching-nginscript-and-looking-ahead/&#34;&gt;nginScript&lt;/a&gt;), you might have similar capabilities with the others.&lt;/p&gt;

&lt;h2 id=&#34;fabio&#34;&gt;Fabio&lt;/h2&gt;

&lt;p&gt;My current favorite to replace &lt;a href=&#34;https://nginx.org&#34;&gt;nginx&lt;/a&gt; (although see &lt;a href=&#34;https://traefik.io&#34;&gt;traeffik&lt;/a&gt; below&amp;hellip;): integration with &lt;a href=&#34;https://www.consul.io&#34;&gt;Consul&lt;/a&gt;, &lt;a href=&#34;https://www.vaultproject.io&#34;&gt;Vault&lt;/a&gt;, PROXY Protocol Support for easier integration with &lt;a href=&#34;https://aws.amazon.com/elasticloadbalancing/&#34;&gt;Amazon load-balancers&lt;/a&gt; and &lt;a href=&#34;https://www.haproxy.org&#34;&gt;haproxy&lt;/a&gt;, and traffic shapping for canary deployments.&lt;/p&gt;

&lt;p&gt;See the &lt;a href=&#34;https://github.com/fabiolb/fabio/wiki/Features&#34;&gt;full feature list&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;My only concern is that there is &lt;a href=&#34;https://github.com/fabiolb/fabio/pulse&#34;&gt;mainly one commiter&lt;/a&gt;. This is true of multiple software projects I use (&lt;a href=&#34;https://redis.io&#34;&gt;Redis&lt;/a&gt; comes to mind), but still, I tend to approach these situations with care.&lt;/p&gt;

&lt;h2 id=&#34;others&#34;&gt;Others&lt;/h2&gt;

&lt;p&gt;Other software projects to look at someday:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://traefik.io&#34;&gt;traeffik&lt;/a&gt;: I really need to look into this one, looks awesome!&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://gobetween.io&#34;&gt;gobetween&lt;/a&gt; (excellent name&amp;hellip;): a layer 4 reverse proxy, TCP, UDP and TCP with TLS. &lt;a href=&#34;https://www.consul.io&#34;&gt;Consul&lt;/a&gt; integration, and much more;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://linkerd.io&#34;&gt;linkerd&lt;/a&gt;: a &lt;a href=&#34;https://www.cncf.io&#34;&gt;CNF&lt;/a&gt; project, focused on creating a service mesh for micro-services integrations;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://getkong.org&#34;&gt;Kong&lt;/a&gt;: an API Gateway;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://caddyserver.com&#34;&gt;Caddy&lt;/a&gt;: HTTPS and HTTP/2 by default, with automatic integration with &lt;a href=&#34;https://letsencrypt.org&#34;&gt;Lets Encrypt&lt;/a&gt;. Configuration looks very simple;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/zalando/skipper&#34;&gt;skipper&lt;/a&gt;: flexible HTTP router, easy to add filters that modify requests and responses;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/cloudfoundry/gorouter&#34;&gt;gorouter&lt;/a&gt;: interesting use of &lt;a href=&#34;https://nats.io&#34;&gt;NATS&lt;/a&gt; to manage the routing table&amp;hellip;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/google/seesaw&#34;&gt;seesaw&lt;/a&gt;: un-official Google product, frontend to Linux kernel LVS, including support for Direct Server Return.&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
  </channel>
</rss>