blog/public/nginx-reverse-proxy-with-ssl-for-services-running-on-tailscale/index.html
2026-03-18 20:32:25 +00:00

76 lines
5 KiB
HTML

<!doctype html>
<html lang="en"><head><script src="/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=livereload" data-no-instant defer></script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="http://localhost:1313/nginx-reverse-proxy-with-ssl-for-services-running-on-tailscale/" />
<title>nginx reverse-proxy with SSL for services running on tailscale! - James&#39; Blog</title>
<link rel="stylesheet" href="/css/style.css">
<script>
document.documentElement.setAttribute('data-theme', 'dark');
</script>
</head>
<body><header class="site-header">
<nav>
<a href="http://localhost:1313/" class="home">~</a>
<div class="nav-links">
<a href="/search">/</a>
</div>
</nav>
</header>
<main id="content">
<article class="post">
<header>
<h1>nginx reverse-proxy with SSL for services running on tailscale!</h1>
<time>Sep 12, 2023</time>
<div class="tags">
<a href="/tags/tailscale">tailscale</a>
<a href="/tags/nixos">nixos</a>
</div>
</header>
<div class="content">
<p>So you&rsquo;re running something on a server somewhere. For whatever reason you cant or don&rsquo;t want to expose ports 80 and 443 to the outside world.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-nix" data-lang="nix"><span class="line"><span class="cl"><span class="n">services</span><span class="o">.</span><span class="n">jellyfin</span><span class="o">.</span><span class="n">enable</span> <span class="o">=</span> <span class="no">true</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">security</span><span class="o">.</span><span class="n">acme</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">acceptTerms</span> <span class="o">=</span> <span class="no">true</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="n">defaults</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">email</span> <span class="o">=</span> <span class="s2">&#34;barry@email.com&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="n">dnsProvider</span> <span class="o">=</span> <span class="s2">&#34;cloudflare&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="n">credentialsFile</span> <span class="o">=</span> <span class="s2">&#34;/etc/credentials.env&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="p">};</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">services</span><span class="o">.</span><span class="n">nginx</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">enable</span> <span class="o">=</span> <span class="no">true</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="n">virtualHosts</span><span class="o">.</span><span class="s2">&#34;example.com&#34;</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">enableACME</span> <span class="o">=</span> <span class="no">true</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="n">acmeRoot</span> <span class="o">=</span> <span class="no">null</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="n">addSSL</span> <span class="o">=</span> <span class="no">true</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="n">locations</span><span class="o">.</span><span class="s2">&#34;/&#34;</span> <span class="o">=</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="n">proxyPass</span> <span class="o">=</span> <span class="s2">&#34;http://127.0.0.1:8096&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="n">proxyWebsockets</span> <span class="o">=</span> <span class="no">true</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="p">};</span>
</span></span><span class="line"><span class="cl"> <span class="p">};</span>
</span></span><span class="line"><span class="cl"><span class="p">};</span>
</span></span></code></pre></div>
</div>
</article>
</main><footer class="site-footer">
<small>
<a href="/index.xml">RSS</a>
·
<a href="https://gohugo.io">Hugo</a>
</small>
<script src="/js/script.js"></script>
</footer>
</body>
</html>