505 lines
34 KiB
HTML
505 lines
34 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en" dir="auto">
|
||
|
||
<head><meta charset="utf-8">
|
||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||
<meta name="robots" content="index, follow">
|
||
<title>Trouble Hosting Hugo with Nginx | Norm-working Packets 💾</title>
|
||
<meta name="keywords" content="git, backups, commandline">
|
||
<meta name="description" content="Learn one way to push your git changes to multiple remote repositories.">
|
||
<meta name="author" content="Me">
|
||
<link rel="canonical" href="../posts/hosting_hugo_troubles.html">
|
||
<script defer data-domain="selfhosted.rsmsn.co" src="https://analytics.rsmsn.co/js/script.js"></script>
|
||
<link crossorigin="anonymous" href="../assets/css/stylesheet.b609c58d5c11bb90b1a54e04005d74ad1ddf22165eb79f5533967e57df9c3b50.css" integrity="sha256-tgnFjVwRu5CxpU4EAF10rR3fIhZet59VM5Z+V9+cO1A=" rel="preload stylesheet" as="style">
|
||
<link rel="icon" href="../favicon.ico">
|
||
<link rel="icon" type="image/png" sizes="16x16" href="../favicon-16x16.png">
|
||
<link rel="icon" type="image/png" sizes="32x32" href="../rsmsncircles.ico">
|
||
<link rel="apple-touch-icon" href="../apple-touch-icon.png">
|
||
<link rel="mask-icon" href="../safari-pinned-tab.svg">
|
||
<meta name="theme-color" content="#2e2e33">
|
||
<meta name="msapplication-TileColor" content="#2e2e33">
|
||
<link rel="alternate" hreflang="en" href="../posts/hosting_hugo_troubles.html">
|
||
<noscript>
|
||
<style>
|
||
#theme-toggle,
|
||
.top-link {
|
||
display: none;
|
||
}
|
||
|
||
</style>
|
||
</noscript>
|
||
|
||
|
||
<meta property="og:title" content="Trouble Hosting Hugo with Nginx" />
|
||
<meta property="og:description" content="Learn one way to push your git changes to multiple remote repositories." />
|
||
<meta property="og:type" content="article" />
|
||
<meta property="og:url" content="/posts/hosting_hugo_troubles.html" />
|
||
<meta property="og:image" content="/hugo-nginx-trouble.png" /><meta property="article:section" content="posts" />
|
||
<meta property="article:published_time" content="2023-09-20T11:33:22-04:00" />
|
||
<meta property="article:modified_time" content="2023-09-20T11:33:22-04:00" /><meta property="og:site_name" content="Self-hosted Norm" />
|
||
|
||
<meta name="twitter:card" content="summary_large_image" />
|
||
<meta name="twitter:image" content="/hugo-nginx-trouble.png" />
|
||
<meta name="twitter:title" content="Trouble Hosting Hugo with Nginx"/>
|
||
<meta name="twitter:description" content="Learn one way to push your git changes to multiple remote repositories."/>
|
||
|
||
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": "BreadcrumbList",
|
||
"itemListElement": [
|
||
{
|
||
"@type": "ListItem",
|
||
"position": 1 ,
|
||
"name": "Posts",
|
||
"item": "/posts.html"
|
||
}
|
||
{
|
||
"@type": "ListItem",
|
||
"position": 1 ,
|
||
"name": "Trouble Hosting Hugo with Nginx",
|
||
"item": "/posts/hosting_hugo_troubles.html"
|
||
}
|
||
]
|
||
}
|
||
</script>
|
||
<script type="application/ld+json">
|
||
{
|
||
"@context": "https://schema.org",
|
||
"@type": "BlogPosting",
|
||
"headline": "Trouble Hosting Hugo with Nginx",
|
||
"name": "Trouble Hosting Hugo with Nginx",
|
||
"description": "Learn one way to push your git changes to multiple remote repositories.",
|
||
"keywords": [
|
||
"git", "backups", "commandline"
|
||
],
|
||
"articleBody": "Intro For the last 3 days, I have been spending a few hours after working trying to figure out why my brand new Hugo site was not loading correctly on my sub-domain. For context, I use Nginx to host all my apps and servers, most of them using reverse proxy protocols such as $proxy_host, $forward_scheme, and $port. There are a few more and I’m happy to share some reverse proxy nginx config files. See my post on moving from NPM to Nginx for more information.\nOnce I got the basic idea of this blog up and running, I ran hugo and then used scp to send the files to my nginx host’s public folder. Despite index.html and all the CSS files being in the right spots, I kept getting a few repetitive errors from nginx - either in my browser’s console or in nginx’s log files. I swore I read through every StackOverflow or personal blog post I could find. In fact, the next day, I would sit back down after work to debug and I would continue to find the same sites and posts I found the day before! It was getting frustrating.\nWouldn’t you know… it was one of the simplest solutions that got it all working. Here’s a breakdown of what I was seeing and my hypothesis.\nErrors Console Errors:\nIncorrect MIME type –\u003e css files being set as text/html type. 500/502 Errors when trying to load javascript files 500 Errors when trying to load child pages. Nginx Log Errors for this server:\n[error] 1147432#1147432: *84013 invalid URL prefix in \"://:/favicon-16x16.png\" [warn] 1147432#1147432: *84013 using uninitialized \"port\" variable Nginx error.log errors:\n[error] 1118832#1118832: *77105 directory index of \"/var/www/html/\" is forbidden I thought I had tried everything, but it was a rip and replace from a single blog post that solved it for me. Some of the things I tried include the following. _Note: when I mention ’nginx config file’ below, I am referring to the specific file for this subdomain. I have a single global nginx.conf and then individual files for each subdomain/proxy host.\nEditing index.html to ensure that any referenced file had an explicit mime type associated with it. Included include { full path }/mime.types in the specific nginx config file. Included specific location ~ \\.(css|js)$ { sections in my nginx config file. Tried assigning the $forward_scheme, $host, and $port variables (similar to a reverse proxy host). Removing any SSL references \u003c– This caused similar behavior but different errors! I thought I was making progress…🫥 Switched out the variables of root and alias between my server and location blocks. Started with something super simple, such as the suggestions from Gideon Wolfe’s Block. If you clicked on the link I just shared, you’ll see that Gideon’s setup is quite similar to the one that I finally got to work. My thought there is that my errors were less about the nginx config setup from within the file, and instead it’s very possible that I set incorrect directory permissions after transferring all the public files to the web server. Gideon’s blog was the very first I clicked on, so I owe them my thanks since their site was the entry point to figuring all this out! You can find a list of all the blogs I stumbled upon in this weird and fluctuating journey of doing something as simple as sharing my static files on an nginx web server.\nSolution In the end, newbs.rocks blog post on setting up Hugo with nginx provided me a config example that worked for my setup. I think part of what happened was that as I was cycling through all the blog posts and StackOverflow posts, I would remove one or two lines (usually the one or two I changed from the previous post’s recommendations) but in doing that, was making more of a mess for myself, burying the error even more deeply. By replacing everything, I’ve brought it back to a manageable place.\nYou’ll also notice in my final config file, I was able to add back in the Authelia snippets, paths for the SSL certs, and a few other items that connect nginx to the rest of my infrastructure.\nIf you’ve stumbled upon this, I hope it helps you figure out your Hugo/Nginx issues! I definitely saw a lot of people posting in Hugo’s Discourse asking about mime type errors, so it is very likely that whatever you’re facing isn’t isolated to just you.\nNow that I have this up and running, I need to write (and post!) a script that will pull from my repo, change directory ownership, and reload nginx.\nResources Working Nginx Config File # ------------------------------------------------------------ # selfhosted.rsmsn.co # ------------------------------------------------------------ server { listen 80; listen [::]:80; listen 443 ssl http2; listen [::]:443 ssl http2; server_name selfhosted.rsmsn.co; root /var/www/html/public/; index /index.html; # Force SSL include conf.d/include/force-ssl.conf; # Custom SSL ssl_certificate custom_ssl/npm-3/fullchain.pem; ssl_certificate_key custom_ssl/npm-3/privkey.pem; access_log /var/log/nginx/blog.log combined; error_log /var/log/nginx/blog_error.log warn; include snippets/authelia-location.conf; location / { try_files $uri $uri/ =404; include snippets/authelia-authrequest.conf; } } Blogs and Sites Gideon Wolfe - Deploying a static Hugo site with NGINX Pvera - Deploying a simple static website using Nginx and Hugo Hugo Support thread on Discourse BravosLab - Static website with Hugo and Nginx Cavelab - Hugo Build deploy to Nginx River - Serving Hugo from a non-root location with Nginx ",
|
||
"wordCount" : "888",
|
||
"inLanguage": "en",
|
||
"image":"/hugo-nginx-trouble.png","datePublished": "2023-09-20T11:33:22-04:00",
|
||
"dateModified": "2023-09-20T11:33:22-04:00",
|
||
"author":{
|
||
"@type": "Person",
|
||
"name": "Me"
|
||
},
|
||
"mainEntityOfPage": {
|
||
"@type": "WebPage",
|
||
"@id": "/posts/hosting_hugo_troubles.html"
|
||
},
|
||
"publisher": {
|
||
"@type": "Organization",
|
||
"name": "Norm-working Packets 💾",
|
||
"logo": {
|
||
"@type": "ImageObject",
|
||
"url": "/favicon.ico"
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
</head>
|
||
|
||
<body class=" dark" id="top">
|
||
<script>
|
||
if (localStorage.getItem("pref-theme") === "light") {
|
||
document.body.classList.remove('dark')
|
||
}
|
||
|
||
</script>
|
||
|
||
<header class="header">
|
||
<nav class="nav">
|
||
<div class="logo">
|
||
<a href="../" accesskey="h" title="Norm-working Packets 💾 (Alt + H)">Norm-working Packets 💾</a>
|
||
<div class="logo-switches">
|
||
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round">
|
||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||
</svg>
|
||
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="18" viewBox="0 0 24 24"
|
||
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
stroke-linejoin="round">
|
||
<circle cx="12" cy="12" r="5"></circle>
|
||
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||
</svg>
|
||
</button>
|
||
<ul class="lang-switch"><li>|</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<ul id="menu">
|
||
<li>
|
||
<a href="../posts.html" title="Posts">
|
||
<span>Posts</span>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</header>
|
||
<main class="main">
|
||
|
||
<article class="post-single">
|
||
<header class="post-header">
|
||
<div class="breadcrumbs"><a href="../">Home</a> » <a href="../posts.html">Posts</a></div>
|
||
<h1 class="post-title entry-hint-parent">
|
||
Trouble Hosting Hugo with Nginx
|
||
</h1>
|
||
<div class="post-description">
|
||
Learn one way to push your git changes to multiple remote repositories.
|
||
</div>
|
||
<div class="post-meta"><span title='2023-09-20 11:33:22 -0400 EDT'>September 20, 2023</span> · 5 min · 888 words · Me
|
||
|
||
</div>
|
||
</header>
|
||
<figure class="entry-cover"><img loading="eager" src="../hugo-nginx-trouble.png" alt="Hugo Logo, Nginx Logo, Tired Face emoji">
|
||
<p>Hosting Hugo on a self-hosted nginx server brought some troubles!</p>
|
||
</figure><div class="toc">
|
||
<details >
|
||
<summary accesskey="c" title="(Alt + C)">
|
||
<span class="details">Table of Contents</span>
|
||
</summary>
|
||
|
||
<div class="inner"><nav id="TableOfContents">
|
||
<ul>
|
||
<li><a href="#intro">Intro</a></li>
|
||
<li><a href="#errors">Errors</a></li>
|
||
<li><a href="#solution">Solution</a></li>
|
||
<li><a href="#resources">Resources</a>
|
||
<ul>
|
||
<li><a href="#nginx-config">Working Nginx Config File</a></li>
|
||
<li><a href="#blogs-and-sites">Blogs and Sites</a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</nav>
|
||
</div>
|
||
</details>
|
||
</div>
|
||
|
||
<div class="post-content"><h2 id="intro">Intro<a hidden class="anchor" aria-hidden="true" href="#intro">#</a></h2>
|
||
<p>For the last 3 days, I have been spending a few hours after working trying to figure out why my brand new Hugo site was not
|
||
loading correctly on my sub-domain. For context, I use Nginx to host all my apps and servers, most of them using reverse
|
||
proxy protocols such as <code>$proxy_host</code>, <code>$forward_scheme</code>, and <code>$port</code>. There are a few more and I’m happy to share some
|
||
reverse proxy nginx config files. See my post on <a href="../posts/npm_to_nginx_tutorial.html">moving from NPM to Nginx</a> for more information.</p>
|
||
<p>Once I got the basic idea of this blog up and running, I ran <code>hugo</code> and then used <code>scp</code> to send the files to my nginx host’s
|
||
public folder. Despite <code>index.html</code> and all the CSS files being in the right spots, I kept getting a few repetitive errors
|
||
from nginx - either in my browser’s console or in nginx’s log files. I swore I read through every StackOverflow or personal
|
||
blog post I could find. In fact, the next day, I would sit back down after work to debug and I would continue to find the
|
||
same sites and posts I found the day before! It was getting frustrating.</p>
|
||
<p>Wouldn’t you know… it was one of the simplest solutions that got it all working. Here’s a breakdown of what I was seeing
|
||
and my hypothesis.</p>
|
||
<h2 id="errors">Errors<a hidden class="anchor" aria-hidden="true" href="#errors">#</a></h2>
|
||
<p><em>Console Errors:</em></p>
|
||
<ul>
|
||
<li>Incorrect MIME type –> <code>css</code> files being set as <code>text/html</code> type.</li>
|
||
<li>500/502 Errors when trying to load javascript files</li>
|
||
<li>500 Errors when trying to load child pages.</li>
|
||
</ul>
|
||
<p><em>Nginx Log Errors for this server:</em></p>
|
||
<ul>
|
||
<li><code>[error] 1147432#1147432: *84013 invalid URL prefix in "://:/favicon-16x16.png"</code></li>
|
||
<li><code>[warn] 1147432#1147432: *84013 using uninitialized "port" variable</code></li>
|
||
</ul>
|
||
<p><em>Nginx <code>error.log</code> errors:</em></p>
|
||
<ul>
|
||
<li><code>[error] 1118832#1118832: *77105 directory index of "/var/www/html/" is forbidden</code></li>
|
||
</ul>
|
||
<p>I thought I had tried everything, but it was a rip and replace from a single blog post that solved it for me. Some of the
|
||
things I tried include the following. _Note: when I mention ’nginx config file’ below, I am referring to the specific file
|
||
for this subdomain. I have a single global nginx.conf and then individual files for each subdomain/proxy host.</p>
|
||
<ul>
|
||
<li>Editing <code>index.html</code> to ensure that any referenced file had an explicit mime type associated with it.</li>
|
||
<li>Included <code>include { full path }/mime.types</code> in the specific nginx config file.</li>
|
||
<li>Included specific <code>location ~ \.(css|js)$ {</code> sections in my nginx config file.</li>
|
||
<li>Tried assigning the <code>$forward_scheme</code>, <code>$host</code>, and <code>$port</code> variables (similar to a reverse proxy host).</li>
|
||
<li>Removing any SSL references <– This caused similar behavior but different errors! I thought I was making progress…🫥</li>
|
||
<li>Switched out the variables of <code>root</code> and <code>alias</code> between my <code>server</code> and <code>location</code> blocks.</li>
|
||
<li>Started with something super simple, such as the suggestions from <a href="https://gideonwolfe.com/posts/sysadmin/hugonginx/">Gideon Wolfe’s Block</a>.</li>
|
||
</ul>
|
||
<p>If you clicked on the link I just shared, you’ll see that Gideon’s setup is quite similar to the one that I finally got to
|
||
work. My thought there is that my errors were less about the nginx config setup from within the file, and instead it’s very
|
||
possible that I set incorrect directory permissions after transferring all the public files to the web server. Gideon’s blog
|
||
was the very first I clicked on, so I owe them my thanks since their site was the entry point to figuring all this out!
|
||
You can find a list of all the blogs I stumbled upon in this weird and fluctuating journey of doing something as simple as
|
||
sharing my static files on an nginx web server.</p>
|
||
<h2 id="solution">Solution<a hidden class="anchor" aria-hidden="true" href="#solution">#</a></h2>
|
||
<p>In the end, <a href="https://newbs.rocks/posts/hugo-setup/">newbs.rocks blog post</a> on setting up Hugo with nginx provided me a config
|
||
example that worked for my setup. I think part of what happened was that as I was cycling through all the blog posts and
|
||
StackOverflow posts, I would remove one or two lines (usually the one or two I changed from the previous post’s
|
||
recommendations) but in doing that, was making more of a mess for myself, burying the error even more deeply. By replacing
|
||
everything, I’ve brought it back to a manageable place.</p>
|
||
<p>You’ll also notice in my <a href="../posts/hosting_hugo_troubles.html#nginx-config">final config file</a>, I was able to add back in the <a href="https://www.authelia.com/">Authelia</a> snippets, paths for the SSL certs, and a few other items that connect nginx to the rest of my infrastructure.</p>
|
||
<p>If you’ve stumbled upon this, I hope it helps you figure out your Hugo/Nginx issues! I definitely saw a lot of people posting
|
||
in Hugo’s Discourse asking about <a href="https://discourse.gohugo.io/search?expanded=true&q=mime%20type">mime type errors</a>, so it is
|
||
very likely that whatever you’re facing isn’t isolated to just you.</p>
|
||
<p>Now that I have this up and running, I need to write (and post!) a script that will pull from my repo, change directory
|
||
ownership, and reload nginx.</p>
|
||
<h2 id="resources">Resources<a hidden class="anchor" aria-hidden="true" href="#resources">#</a></h2>
|
||
<h3 id="nginx-config">Working Nginx Config File<a hidden class="anchor" aria-hidden="true" href="#nginx-config">#</a></h3>
|
||
<pre tabindex="0"><code class="language-config" data-lang="config"># ------------------------------------------------------------
|
||
# selfhosted.rsmsn.co
|
||
# ------------------------------------------------------------
|
||
|
||
server {
|
||
listen 80;
|
||
listen [::]:80;
|
||
|
||
listen 443 ssl http2;
|
||
listen [::]:443 ssl http2;
|
||
|
||
server_name selfhosted.rsmsn.co;
|
||
|
||
root /var/www/html/public/;
|
||
index /index.html;
|
||
|
||
# Force SSL
|
||
include conf.d/include/force-ssl.conf;
|
||
|
||
# Custom SSL
|
||
ssl_certificate custom_ssl/npm-3/fullchain.pem;
|
||
ssl_certificate_key custom_ssl/npm-3/privkey.pem;
|
||
|
||
|
||
access_log /var/log/nginx/blog.log combined;
|
||
error_log /var/log/nginx/blog_error.log warn;
|
||
|
||
include snippets/authelia-location.conf;
|
||
|
||
location / {
|
||
try_files $uri $uri/ =404;
|
||
include snippets/authelia-authrequest.conf;
|
||
}
|
||
}
|
||
</code></pre><h3 id="blogs-and-sites">Blogs and Sites<a hidden class="anchor" aria-hidden="true" href="#blogs-and-sites">#</a></h3>
|
||
<ul>
|
||
<li><a href="https://gideonwolfe.com/posts/sysadmin/hugonginx/">Gideon Wolfe - Deploying a static Hugo site with NGINX</a></li>
|
||
<li><a href="https://pvera.net/posts/create-site-nginx-hugo/">Pvera - Deploying a simple static website using Nginx and Hugo</a></li>
|
||
<li><a href="https://discourse.gohugo.io/t/help-deploying-with-nginx/12609">Hugo Support thread on Discourse</a></li>
|
||
<li><a href="https://bravoslab.com/post/static-website-wirh-hugo-io-and-ngnix/">BravosLab - Static website with Hugo and Nginx</a></li>
|
||
<li><a href="https://blog.cavelab.dev/2021/02/hugo-build-deploy-to-nginx/">Cavelab - Hugo Build deploy to Nginx</a></li>
|
||
<li><a href="https://river.me/blog/hugo-non-root-location/">River - Serving Hugo from a non-root location with Nginx</a></li>
|
||
</ul>
|
||
|
||
|
||
</div>
|
||
|
||
<footer class="post-footer">
|
||
<ul class="post-tags">
|
||
<li><a href="../tags/git.html">Git</a></li>
|
||
<li><a href="../tags/backups.html">Backups</a></li>
|
||
<li><a href="../tags/commandline.html">Commandline</a></li>
|
||
</ul>
|
||
<nav class="paginav">
|
||
<a class="prev" href="../posts/multiple_git_remotes.html">
|
||
<span class="title">« Prev</span>
|
||
<br>
|
||
<span>Pushing a Single Local Git Repo to Multiple Remote Repos</span>
|
||
</a>
|
||
<a class="next" href="../posts/npm_to_nginx_tutorial.html">
|
||
<span class="title">Next »</span>
|
||
<br>
|
||
<span>Tutorial: Move from NginxProxyManager to Nginx</span>
|
||
</a>
|
||
</nav>
|
||
|
||
|
||
<ul class="share-buttons">
|
||
<li>
|
||
<a target="_blank" rel="noopener noreferrer" aria-label="share Trouble Hosting Hugo with Nginx on x"
|
||
href="https://x.com/intent/tweet/?text=Trouble%20Hosting%20Hugo%20with%20Nginx&url=%2fposts%2fhosting_hugo_troubles.html&hashtags=git%2cbackups%2ccommandline">
|
||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||
<path
|
||
d="M512 62.554 L 512 449.446 C 512 483.97 483.97 512 449.446 512 L 62.554 512 C 28.03 512 0 483.97 0 449.446 L 0 62.554 C 0 28.03 28.029 0 62.554 0 L 449.446 0 C 483.971 0 512 28.03 512 62.554 Z M 269.951 190.75 L 182.567 75.216 L 56 75.216 L 207.216 272.95 L 63.9 436.783 L 125.266 436.783 L 235.9 310.383 L 332.567 436.783 L 456 436.783 L 298.367 228.367 L 432.367 75.216 L 371.033 75.216 Z M 127.633 110 L 164.101 110 L 383.481 400.065 L 349.5 400.065 Z" />
|
||
</svg>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a target="_blank" rel="noopener noreferrer" aria-label="share Trouble Hosting Hugo with Nginx on linkedin"
|
||
href="https://www.linkedin.com/shareArticle?mini=true&url=%2fposts%2fhosting_hugo_troubles.html&title=Trouble%20Hosting%20Hugo%20with%20Nginx&summary=Trouble%20Hosting%20Hugo%20with%20Nginx&source=%2fposts%2fhosting_hugo_troubles.html">
|
||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||
<path
|
||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-288.985,423.278l0,-225.717l-75.04,0l0,225.717l75.04,0Zm270.539,0l0,-129.439c0,-69.333 -37.018,-101.586 -86.381,-101.586c-39.804,0 -57.634,21.891 -67.617,37.266l0,-31.958l-75.021,0c0.995,21.181 0,225.717 0,225.717l75.02,0l0,-126.056c0,-6.748 0.486,-13.492 2.474,-18.315c5.414,-13.475 17.767,-27.434 38.494,-27.434c27.135,0 38.007,20.707 38.007,51.037l0,120.768l75.024,0Zm-307.552,-334.556c-25.674,0 -42.448,16.879 -42.448,39.002c0,21.658 16.264,39.002 41.455,39.002l0.484,0c26.165,0 42.452,-17.344 42.452,-39.002c-0.485,-22.092 -16.241,-38.954 -41.943,-39.002Z" />
|
||
</svg>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a target="_blank" rel="noopener noreferrer" aria-label="share Trouble Hosting Hugo with Nginx on reddit"
|
||
href="https://reddit.com/submit?url=%2fposts%2fhosting_hugo_troubles.html&title=Trouble%20Hosting%20Hugo%20with%20Nginx">
|
||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||
<path
|
||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-3.446,265.638c0,-22.964 -18.616,-41.58 -41.58,-41.58c-11.211,0 -21.361,4.457 -28.841,11.666c-28.424,-20.508 -67.586,-33.757 -111.204,-35.278l18.941,-89.121l61.884,13.157c0.756,15.734 13.642,28.29 29.56,28.29c16.407,0 29.706,-13.299 29.706,-29.701c0,-16.403 -13.299,-29.702 -29.706,-29.702c-11.666,0 -21.657,6.792 -26.515,16.578l-69.105,-14.69c-1.922,-0.418 -3.939,-0.042 -5.585,1.036c-1.658,1.073 -2.811,2.761 -3.224,4.686l-21.152,99.438c-44.258,1.228 -84.046,14.494 -112.837,35.232c-7.468,-7.164 -17.589,-11.591 -28.757,-11.591c-22.965,0 -41.585,18.616 -41.585,41.58c0,16.896 10.095,31.41 24.568,37.918c-0.639,4.135 -0.99,8.328 -0.99,12.576c0,63.977 74.469,115.836 166.33,115.836c91.861,0 166.334,-51.859 166.334,-115.836c0,-4.218 -0.347,-8.387 -0.977,-12.493c14.564,-6.47 24.735,-21.034 24.735,-38.001Zm-119.474,108.193c-20.27,20.241 -59.115,21.816 -70.534,21.816c-11.428,0 -50.277,-1.575 -70.522,-21.82c-3.007,-3.008 -3.007,-7.882 0,-10.889c3.003,-2.999 7.882,-3.003 10.885,0c12.777,12.781 40.11,17.317 59.637,17.317c19.522,0 46.86,-4.536 59.657,-17.321c3.016,-2.999 7.886,-2.995 10.885,0.008c3.008,3.011 3.003,7.882 -0.008,10.889Zm-5.23,-48.781c-16.373,0 -29.701,-13.324 -29.701,-29.698c0,-16.381 13.328,-29.714 29.701,-29.714c16.378,0 29.706,13.333 29.706,29.714c0,16.374 -13.328,29.698 -29.706,29.698Zm-160.386,-29.702c0,-16.381 13.328,-29.71 29.714,-29.71c16.369,0 29.689,13.329 29.689,29.71c0,16.373 -13.32,29.693 -29.689,29.693c-16.386,0 -29.714,-13.32 -29.714,-29.693Z" />
|
||
</svg>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a target="_blank" rel="noopener noreferrer" aria-label="share Trouble Hosting Hugo with Nginx on facebook"
|
||
href="https://facebook.com/sharer/sharer.php?u=%2fposts%2fhosting_hugo_troubles.html">
|
||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||
<path
|
||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-106.468,0l0,-192.915l66.6,0l12.672,-82.621l-79.272,0l0,-53.617c0,-22.603 11.073,-44.636 46.58,-44.636l36.042,0l0,-70.34c0,0 -32.71,-5.582 -63.982,-5.582c-65.288,0 -107.96,39.569 -107.96,111.204l0,62.971l-72.573,0l0,82.621l72.573,0l0,192.915l-191.104,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Z" />
|
||
</svg>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a target="_blank" rel="noopener noreferrer" aria-label="share Trouble Hosting Hugo with Nginx on whatsapp"
|
||
href="https://api.whatsapp.com/send?text=Trouble%20Hosting%20Hugo%20with%20Nginx%20-%20%2fposts%2fhosting_hugo_troubles.html">
|
||
<svg version="1.1" viewBox="0 0 512 512" xml:space="preserve" height="30px" width="30px" fill="currentColor">
|
||
<path
|
||
d="M449.446,0c34.525,0 62.554,28.03 62.554,62.554l0,386.892c0,34.524 -28.03,62.554 -62.554,62.554l-386.892,0c-34.524,0 -62.554,-28.03 -62.554,-62.554l0,-386.892c0,-34.524 28.029,-62.554 62.554,-62.554l386.892,0Zm-58.673,127.703c-33.842,-33.881 -78.847,-52.548 -126.798,-52.568c-98.799,0 -179.21,80.405 -179.249,179.234c-0.013,31.593 8.241,62.428 23.927,89.612l-25.429,92.884l95.021,-24.925c26.181,14.28 55.659,21.807 85.658,21.816l0.074,0c98.789,0 179.206,-80.413 179.247,-179.243c0.018,-47.895 -18.61,-92.93 -52.451,-126.81Zm-126.797,275.782l-0.06,0c-26.734,-0.01 -52.954,-7.193 -75.828,-20.767l-5.441,-3.229l-56.386,14.792l15.05,-54.977l-3.542,-5.637c-14.913,-23.72 -22.791,-51.136 -22.779,-79.287c0.033,-82.142 66.867,-148.971 149.046,-148.971c39.793,0.014 77.199,15.531 105.329,43.692c28.128,28.16 43.609,65.592 43.594,105.4c-0.034,82.149 -66.866,148.983 -148.983,148.984Zm81.721,-111.581c-4.479,-2.242 -26.499,-13.075 -30.604,-14.571c-4.105,-1.495 -7.091,-2.241 -10.077,2.241c-2.986,4.483 -11.569,14.572 -14.182,17.562c-2.612,2.988 -5.225,3.364 -9.703,1.12c-4.479,-2.241 -18.91,-6.97 -36.017,-22.23c-13.314,-11.876 -22.304,-26.542 -24.916,-31.026c-2.612,-4.484 -0.279,-6.908 1.963,-9.14c2.016,-2.007 4.48,-5.232 6.719,-7.847c2.24,-2.615 2.986,-4.484 4.479,-7.472c1.493,-2.99 0.747,-5.604 -0.374,-7.846c-1.119,-2.241 -10.077,-24.288 -13.809,-33.256c-3.635,-8.733 -7.327,-7.55 -10.077,-7.688c-2.609,-0.13 -5.598,-0.158 -8.583,-0.158c-2.986,0 -7.839,1.121 -11.944,5.604c-4.105,4.484 -15.675,15.32 -15.675,37.364c0,22.046 16.048,43.342 18.287,46.332c2.24,2.99 31.582,48.227 76.511,67.627c10.685,4.615 19.028,7.371 25.533,9.434c10.728,3.41 20.492,2.929 28.209,1.775c8.605,-1.285 26.499,-10.833 30.231,-21.295c3.732,-10.464 3.732,-19.431 2.612,-21.298c-1.119,-1.869 -4.105,-2.99 -8.583,-5.232Z" />
|
||
</svg>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a target="_blank" rel="noopener noreferrer" aria-label="share Trouble Hosting Hugo with Nginx on telegram"
|
||
href="https://telegram.me/share/url?text=Trouble%20Hosting%20Hugo%20with%20Nginx&url=%2fposts%2fhosting_hugo_troubles.html">
|
||
<svg version="1.1" xml:space="preserve" viewBox="2 2 28 28" height="30px" width="30px" fill="currentColor">
|
||
<path
|
||
d="M26.49,29.86H5.5a3.37,3.37,0,0,1-2.47-1,3.35,3.35,0,0,1-1-2.47V5.48A3.36,3.36,0,0,1,3,3,3.37,3.37,0,0,1,5.5,2h21A3.38,3.38,0,0,1,29,3a3.36,3.36,0,0,1,1,2.46V26.37a3.35,3.35,0,0,1-1,2.47A3.38,3.38,0,0,1,26.49,29.86Zm-5.38-6.71a.79.79,0,0,0,.85-.66L24.73,9.24a.55.55,0,0,0-.18-.46.62.62,0,0,0-.41-.17q-.08,0-16.53,6.11a.59.59,0,0,0-.41.59.57.57,0,0,0,.43.52l4,1.24,1.61,4.83a.62.62,0,0,0,.63.43.56.56,0,0,0,.4-.17L16.54,20l4.09,3A.9.9,0,0,0,21.11,23.15ZM13.8,20.71l-1.21-4q8.72-5.55,8.78-5.55c.15,0,.23,0,.23.16a.18.18,0,0,1,0,.06s-2.51,2.3-7.52,6.8Z" />
|
||
</svg>
|
||
</a>
|
||
</li>
|
||
<li>
|
||
<a target="_blank" rel="noopener noreferrer" aria-label="share Trouble Hosting Hugo with Nginx on ycombinator"
|
||
href="https://news.ycombinator.com/submitlink?t=Trouble%20Hosting%20Hugo%20with%20Nginx&u=%2fposts%2fhosting_hugo_troubles.html">
|
||
<svg version="1.1" xml:space="preserve" width="30px" height="30px" viewBox="0 0 512 512" fill="currentColor"
|
||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
|
||
<path
|
||
d="M449.446 0C483.971 0 512 28.03 512 62.554L512 449.446C512 483.97 483.97 512 449.446 512L62.554 512C28.03 512 0 483.97 0 449.446L0 62.554C0 28.03 28.029 0 62.554 0L449.446 0ZM183.8767 87.9921H121.8427L230.6673 292.4508V424.0079H281.3328V292.4508L390.1575 87.9921H328.1233L256 238.2489z" />
|
||
</svg>
|
||
</a>
|
||
</li>
|
||
</ul>
|
||
|
||
</footer>
|
||
</article>
|
||
</main>
|
||
|
||
<footer class="footer">
|
||
<span>© 2024 <a href="../">Norm-working Packets 💾</a></span>
|
||
<span>
|
||
Powered by
|
||
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||
<a href="https://github.com/adityatelange/hugo-PaperMod/" rel="noopener" target="_blank">PaperMod</a>
|
||
</span>
|
||
</footer>
|
||
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||
<path d="M12 6H0l6-6z" />
|
||
</svg>
|
||
</a>
|
||
|
||
<script>
|
||
let menu = document.getElementById('menu')
|
||
if (menu) {
|
||
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||
menu.onscroll = function () {
|
||
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||
}
|
||
}
|
||
|
||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||
anchor.addEventListener("click", function (e) {
|
||
e.preventDefault();
|
||
var id = this.getAttribute("href").substr(1);
|
||
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||
behavior: "smooth"
|
||
});
|
||
} else {
|
||
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView();
|
||
}
|
||
if (id === "top") {
|
||
history.replaceState(null, null, " ");
|
||
} else {
|
||
history.pushState(null, null, `#${id}`);
|
||
}
|
||
});
|
||
});
|
||
|
||
</script>
|
||
<script>
|
||
var mybutton = document.getElementById("top-link");
|
||
window.onscroll = function () {
|
||
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||
mybutton.style.visibility = "visible";
|
||
mybutton.style.opacity = "1";
|
||
} else {
|
||
mybutton.style.visibility = "hidden";
|
||
mybutton.style.opacity = "0";
|
||
}
|
||
};
|
||
|
||
</script>
|
||
<script>
|
||
document.getElementById("theme-toggle").addEventListener("click", () => {
|
||
if (document.body.className.includes("dark")) {
|
||
document.body.classList.remove('dark');
|
||
localStorage.setItem("pref-theme", 'light');
|
||
} else {
|
||
document.body.classList.add('dark');
|
||
localStorage.setItem("pref-theme", 'dark');
|
||
}
|
||
})
|
||
|
||
</script>
|
||
<script>
|
||
document.querySelectorAll('pre > code').forEach((codeblock) => {
|
||
const container = codeblock.parentNode.parentNode;
|
||
|
||
const copybutton = document.createElement('button');
|
||
copybutton.classList.add('copy-code');
|
||
copybutton.innerHTML = 'copy';
|
||
|
||
function copyingDone() {
|
||
copybutton.innerHTML = 'copied!';
|
||
setTimeout(() => {
|
||
copybutton.innerHTML = 'copy';
|
||
}, 2000);
|
||
}
|
||
|
||
copybutton.addEventListener('click', (cb) => {
|
||
if ('clipboard' in navigator) {
|
||
navigator.clipboard.writeText(codeblock.textContent);
|
||
copyingDone();
|
||
return;
|
||
}
|
||
|
||
const range = document.createRange();
|
||
range.selectNodeContents(codeblock);
|
||
const selection = window.getSelection();
|
||
selection.removeAllRanges();
|
||
selection.addRange(range);
|
||
try {
|
||
document.execCommand('copy');
|
||
copyingDone();
|
||
} catch (e) { };
|
||
selection.removeRange(range);
|
||
});
|
||
|
||
if (container.classList.contains("highlight")) {
|
||
container.appendChild(copybutton);
|
||
} else if (container.parentNode.firstChild == container) {
|
||
|
||
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
|
||
|
||
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
|
||
} else {
|
||
|
||
codeblock.parentNode.appendChild(copybutton);
|
||
}
|
||
});
|
||
</script>
|
||
</body>
|
||
|
||
</html>
|