> ## Documentation Index
> Fetch the complete documentation index at: https://developer.upsun.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Jared Wright

> Articles written by Jared Wright.

<div className="flex items-center gap-4 mb-8 not-prose">
  <img src="https://github.com/jww-sh.png?size=128" alt="Jared Wright" className="w-16 h-16 rounded-full" />

  <div className="flex flex-wrap gap-3">
    <a href="https://github.com/jww-sh" target="_blank" rel="noopener noreferrer" className="inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full border border-gray-200 dark:border-white/10 text-sm text-gray-700 dark:text-gray-300 hover:border-primary dark:hover:border-primary-light transition-colors">GitHub</a>
    <a href="https://www.linkedin.com/in/jaredwaynewright" target="_blank" rel="noopener noreferrer" className="inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full border border-gray-200 dark:border-white/10 text-sm text-gray-700 dark:text-gray-300 hover:border-primary dark:hover:border-primary-light transition-colors">LinkedIn</a>
  </div>
</div>

<div className="blog-card-grid">
  <a href="/posts/tutorials/deploy-mattermost-on-upsun" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/tutorials/deploy-mattermost-on-upsun/deploy-mattermost-on-upsun.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/tutorials/deploy-mattermost-on-upsun/deploy-mattermost-on-upsun.webp" alt="Deploy Mattermost Team Edition on Upsun" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`tutorials` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        tutorials
                      </span>
                    )}

        <span className="text-xs text-subtle">Friday, February 27th 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Deploy Mattermost Team Edition on Upsun</h3>
      <p className="blog-card-desc">Learn how to deploy a self-hosted Mattermost Team Edition server on Upsun, with PostgreSQL 16 and OpenSearch 2 configured automatically through a single infrastructure-as-code file.</p>
    </div>
  </a>

  <a href="/posts/hands-on/varnish-104-advanced-traffic-filtering-with-classification-headers-on-upsun" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/hands-on/varnish-104-advanced-traffic-filtering-with-classification-headers-on-upsun/varnish-104.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/hands-on/varnish-104-advanced-traffic-filtering-with-classification-headers-on-upsun/varnish-104.webp" alt="Varnish 104: Advanced Traffic Filtering with Classification Headers on Upsun" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`hands-on` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        hands-on
                      </span>
                    )}

        <span className="text-xs text-subtle">Friday, November 7th 2025</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Varnish 104: Advanced Traffic Filtering with Classification Headers on Upsun</h3>
      <p className="blog-card-desc">Learn how to implement advanced security controls in Varnish on Upsun using classification headers to block malicious traffic, restrict geographic access, filter by ASN, and protect sensitive paths with HTTP Basic Auth.</p>
    </div>
  </a>

  <a href="/posts/hands-on/varnish-103-cache-optimization-with-url-normalization-on-upsun" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/hands-on/varnish-103-cache-optimization-with-url-normalization-on-upsun/varnish-103.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/hands-on/varnish-103-cache-optimization-with-url-normalization-on-upsun/varnish-103.webp" alt="Varnish 103: Cache Optimization with URL Normalization on Upsun" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`hands-on` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        hands-on
                      </span>
                    )}

        <span className="text-xs text-subtle">Friday, October 31st 2025</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Varnish 103: Cache Optimization with URL Normalization on Upsun</h3>
      <p className="blog-card-desc">Learn how to maximize Varnish cache efficiency through URL normalization, query string sorting, and tracking parameter removal to dramatically improve cache hit ratios and reduce backend load.</p>
    </div>
  </a>

  <a href="/posts/hands-on/varnish-102-protecting-your-application-with-rate-limiting-on-upsun" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/hands-on/varnish-102-protecting-your-application-with-rate-limiting-on-upsun/varnish-102.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/hands-on/varnish-102-protecting-your-application-with-rate-limiting-on-upsun/varnish-102.webp" alt="Varnish 102: Protecting Your Application with Rate Limiting on Upsun" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`hands-on` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        hands-on
                      </span>
                    )}

        <span className="text-xs text-subtle">Friday, October 24th 2025</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Varnish 102: Protecting Your Application with Rate Limiting on Upsun</h3>
      <p className="blog-card-desc">Learn how to implement effective rate limiting in Varnish using the vsthrottle VMOD to protect your application from abuse, prevent DDoS attacks, and ensure fair resource allocation.</p>
    </div>
  </a>

  <a href="/posts/hands-on/varnish-101-protecting-paths-with-http-basic-authentication-on-upsun" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/hands-on/varnish-101-protecting-paths-with-http-basic-authentication-on-upsun/varnish-101.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/hands-on/varnish-101-protecting-paths-with-http-basic-authentication-on-upsun/varnish-101.webp" alt="Varnish 101: Protecting Paths with HTTP Basic Authentication on Upsun" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`hands-on` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        hands-on
                      </span>
                    )}

        <span className="text-xs text-subtle">Friday, October 17th 2025</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Varnish 101: Protecting Paths with HTTP Basic Authentication on Upsun</h3>
      <p className="blog-card-desc">Learn how to implement HTTP Basic Authentication directly in Varnish VCL on Upsun to protect specific paths like admin areas, staging environments, and work-in-progress content without touching your backend.</p>
    </div>
  </a>
</div>
