<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Nginx on phinguin123</title>
    <link>http://phinguin.dev/tags/nginx/</link>
    <description>Recent content in Nginx on phinguin123</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <copyright>2026 phinguin</copyright>
    <lastBuildDate>Mon, 29 Jun 2026 20:48:00 +0900</lastBuildDate>
    <atom:link href="http://phinguin.dev/tags/nginx/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>I Pulled /etc/passwd Off My Own Server</title>
      <link>http://phinguin.dev/blog/reading-my-own-etc-passwd/</link>
      <pubDate>Mon, 29 Jun 2026 20:48:00 +0900</pubDate>
      <guid>http://phinguin.dev/blog/reading-my-own-etc-passwd/</guid>
      <description>An nginx 400 felt like a fix. send_from_directory felt like a fix. Then a different endpoint handed me /etc/passwd, and the real question was how bad that actually is.</description>
    </item>
    <item>
      <title>What the Four SSL Files Actually Do</title>
      <link>http://phinguin.dev/blog/what-ssl-certificate-files-actually-do/</link>
      <pubDate>Thu, 26 Mar 2026 12:12:00 +0900</pubDate>
      <guid>http://phinguin.dev/blog/what-ssl-certificate-files-actually-do/</guid>
      <description>cert.crt, chain_cert.crt, root_cert.crt and a .key. I&amp;rsquo;d installed them a dozen times without knowing why there were four, so I finally sat down and worked it out on my own server.</description>
    </item>
    <item>
      <title>Dev and Prod on One Server</title>
      <link>http://phinguin.dev/blog/dev-and-prod-on-one-server/</link>
      <pubDate>Thu, 05 Feb 2026 12:56:00 +0900</pubDate>
      <guid>http://phinguin.dev/blog/dev-and-prod-on-one-server/</guid>
      <description>Running dev and prod side by side on one AWS box. Compose project names fixed the collisions, and made it really easy to forget everything Docker doesn&amp;rsquo;t own.</description>
    </item>
    <item>
      <title>What the Upstream Image Was Hiding</title>
      <link>http://phinguin.dev/blog/what-the-upstream-image-was-hiding/</link>
      <pubDate>Fri, 05 Dec 2025 12:00:00 +0900</pubDate>
      <guid>http://phinguin.dev/blog/what-the-upstream-image-was-hiding/</guid>
      <description>Splitting an all-in-one Docker image into separate services broke a bunch of assumptions I didn&amp;rsquo;t know existed. Every &amp;ldquo;how did this work before?&amp;rdquo; had the same answer.</description>
    </item>
    <item>
      <title>Who Actually Visited the Landing Page?</title>
      <link>http://phinguin.dev/blog/who-actually-visited-the-landing-page/</link>
      <pubDate>Mon, 24 Nov 2025 11:43:00 +0900</pubDate>
      <guid>http://phinguin.dev/blog/who-actually-visited-the-landing-page/</guid>
      <description>Answering a marketing question with grep and awk on nginx access logs: requests vs. visitors, bots, timezones, and why the log can&amp;rsquo;t tell you what the browser never sent.</description>
    </item>
  </channel>
</rss>
