<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Static Sites on S3H.com</title>
    <link>https://s3h.com/tags/static-sites/</link>
    <description>Recent content in Static Sites on S3H.com</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 02 Oct 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://s3h.com/tags/static-sites/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>BareProxy Is a Small Go Web Server and Reverse Proxy That Explains Every Routing Decision</title>
      <link>https://s3h.com/bareproxy-is-a-small-go-web-server-and-reverse-proxy-that-explains-every-routing-decision/</link>
      <pubDate>Fri, 02 Oct 2026 00:00:00 +0000</pubDate>
      <guid>https://s3h.com/bareproxy-is-a-small-go-web-server-and-reverse-proxy-that-explains-every-routing-decision/</guid>
      <description>&lt;p&gt;Most sites use a thin slice of nginx: TLS, a folder of static files, a couple of routes to an app, health checks and the odd reload. The config grows anyway, one regex at a time, until nobody is quite sure which block handles a given URL.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://bareproxy.com/&#34;&gt;BareProxy&lt;/a&gt; keeps its core to that slice and makes it answer questions. &lt;code&gt;bareproxy explain&lt;/code&gt; takes a URL and shows which rule matched, which file or backend would serve it, and why the rules above it didn&amp;rsquo;t match. &lt;code&gt;bareproxy why&lt;/code&gt; tells the story of a request that already happened, starting from the ID it carried in a response header.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
