Skip to content

Commit 5fa30e4

Browse files
ralyodioclaude
andauthored
Add the pit.world global footer via nginx SSI, trim the footer (#6)
nginx fetches https://pit.world/snippets/footer.html?site=sysops.ceo server side and SSI-includes it last in <body>: cached an hour, served stale if pit.world is down, 3s timeout, any failure includes nothing. Replaces the @profullstack/footer webring block and its jsDelivr embed script with a one-line copyright footer. The CrawlProof text ad moves from just above the footer to the top of the page. Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 5ac2179 commit 5fa30e4

2 files changed

Lines changed: 39 additions & 5 deletions

File tree

‎index.html‎

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@
77
<script data-site="df03803e-4afd-41e4-a7e5-ef844210fd41" src="https://crawlproof.com/stats.js" async></script>
88
</head>
99
<body>
10-
<h1>sysops.ceo</h1>
1110
<aside class="cp-ad" data-cp-ad data-slot="2f100f66-979a-4ea1-9fc0-65c2aa5d39e2" data-format="text_link"></aside>
11+
<h1>sysops.ceo</h1>
1212
<style>.cp-ad{display:block;max-width:728px;margin:1.5rem auto;padding:0 1rem;height:0;overflow:hidden}.cp-ad[data-cp-filled]{height:auto;overflow:visible}</style>
1313
<script src="https://crawlproof.com/ad.js" async></script>
14-
<footer data-profullstack-footer data-site="https://sysops.ceo/">
15-
<footer class="pfs-footer" data-pfs-footer="0.2.1"><style>.pfs-footer{--pfs-footer-muted:color-mix(in srgb,currentColor 62%,transparent);--pfs-footer-gap:.5rem 1.25rem;--pfs-footer-size:.875rem;border-top:1px solid color-mix(in srgb,currentColor 14%,transparent);font-size:var(--pfs-footer-size);line-height:1.5;color:inherit}.pfs-footer__inner{max-width:72rem;margin:0 auto;padding:1.5rem 1rem;display:flex;flex-direction:column;align-items:center;gap:.75rem;text-align:center}.pfs-footer a{color:var(--pfs-footer-muted);text-decoration:none}.pfs-footer a:hover,.pfs-footer a:focus-visible{color:inherit;text-decoration:underline}.pfs-footer__links{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--pfs-footer-gap)}.pfs-footer__ring{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem}.pfs-footer__icon{display:inline-block;width:1em;height:1em;vertical-align:-.125em;background-color:currentColor;-webkit-mask:var(--pfs-footer-glyph) center/contain no-repeat;mask:var(--pfs-footer-glyph) center/contain no-repeat}.pfs-footer__icon--random{--pfs-footer-glyph:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Crect%20x%3D'3'%20y%3D'3'%20width%3D'18'%20height%3D'18'%20rx%3D'3'%2F%3E%3Ccircle%20cx%3D'8'%20cy%3D'8'%20r%3D'1'%2F%3E%3Ccircle%20cx%3D'16'%20cy%3D'8'%20r%3D'1'%2F%3E%3Ccircle%20cx%3D'12'%20cy%3D'12'%20r%3D'1'%2F%3E%3Ccircle%20cx%3D'8'%20cy%3D'16'%20r%3D'1'%2F%3E%3Ccircle%20cx%3D'16'%20cy%3D'16'%20r%3D'1'%2F%3E%3C%2Fsvg%3E")}.pfs-footer__icon--vote{--pfs-footer-glyph:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2024%2024'%20fill%3D'none'%20stroke%3D'black'%20stroke-width%3D'2'%20stroke-linecap%3D'round'%20stroke-linejoin%3D'round'%3E%3Cpath%20d%3D'M12%204%2021%2019H3z'%2F%3E%3C%2Fsvg%3E")}.pfs-footer__copy{margin:0;color:var(--pfs-footer-muted)}.pfs-footer__copy a{color:inherit}</style><div class="pfs-footer__inner"><nav class="webring pfs-footer__ring" aria-label="Profullstack webring"><a href="https://rssamplifier.com/ring/profullstack/previous?from=https%3A%2F%2Fsysops.ceo%2F" rel="prev" title="Previous site">&lt;&lt;</a><a href="https://rssamplifier.com/ring/profullstack">Profullstack</a><a href="https://rssamplifier.com/ring/profullstack/next?from=https%3A%2F%2Fsysops.ceo%2F" rel="next" title="Next site">&gt;&gt;</a></nav><p class="pfs-footer__copy">&copy; 2026 <a href="https://profullstack.com/">Profullstack, Inc.</a></p></div></footer>
16-
</footer>
17-
<script type="module" src="https://cdn.jsdelivr.net/npm/@profullstack/footer@latest/src/embed.js"></script>
14+
<footer style="max-width:72rem;margin:2rem auto 0;padding:1rem;text-align:center;font-size:.875rem;opacity:.7">&copy; 2026 <a href="https://profullstack.com/">Profullstack, Inc.</a></footer>
15+
<!--# include virtual="/_pit/footer" -->
1816
</body>
1917
</html>

‎nginx.conf‎

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,43 @@
1+
# The pit.world network footer is fetched server side from pit.world and
2+
# included into the page with SSI: cached an hour (served stale if pit.world is
3+
# down), 3-second timeout, and any failure includes nothing.
4+
proxy_cache_path /var/cache/nginx/pit levels=1 keys_zone=pit:1m max_size=2m inactive=7d use_temp_path=off;
5+
16
server {
27
listen 3000;
38
root /usr/share/nginx/html;
9+
resolver 1.1.1.1 8.8.8.8 valid=300s ipv6=off;
10+
resolver_timeout 3s;
11+
12+
ssi on;
13+
ssi_silent_errors on;
14+
415
location / {
516
try_files $uri $uri/ =404;
617
}
18+
19+
location = /_pit/footer {
20+
internal;
21+
set $pit_footer "https://pit.world/snippets/footer.html?site=sysops.ceo";
22+
proxy_pass $pit_footer;
23+
proxy_set_header Host pit.world;
24+
proxy_set_header Accept-Encoding "";
25+
proxy_ssl_server_name on;
26+
proxy_connect_timeout 3s;
27+
proxy_send_timeout 3s;
28+
proxy_read_timeout 3s;
29+
proxy_cache pit;
30+
proxy_cache_key pit-footer;
31+
proxy_cache_valid 200 1h;
32+
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
33+
proxy_cache_background_update on;
34+
proxy_ignore_headers Cache-Control Expires Set-Cookie;
35+
proxy_intercept_errors on;
36+
error_page 301 302 400 403 404 429 500 502 503 504 = /_pit/empty;
37+
}
38+
39+
location = /_pit/empty {
40+
internal;
41+
return 204;
42+
}
743
}

0 commit comments

Comments
 (0)