nginx-conf/nik4nao.home.arpa.conf
2026-01-24 21:02:50 +09:00

188 lines
5.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# /etc/nginx/sites-available/nik4nao.home.arpa
# WebSocket upgrade helper (for Jellyfin)
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
server_name nik4nao.home.arpa;
access_log off;
error_log /var/log/nginx/nik4naohomearpa_error.log warn;
# ---- Dashy at / (root) ----
location = / {
proxy_pass http://127.0.0.1:8084;
include snippets/proxy-common.conf;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
location = /pihole {
return 302 /admin/;
}
# ---- favicon (avoid noisy 404 in browser) ----
# Put a favicon.ico in /var/www/html if you want a real icon.
location = /favicon.ico {
root /var/www/html;
access_log off;
try_files /favicon.ico =404;
}
location /pihole/ {
return 301 /admin/;
}
# ---- Jellyfin at /jellyfin/ ----
location = /jellyfin {
return 302 /jellyfin/;
}
location /jellyfin/ {
proxy_pass http://jellyfin_upstream/; # uses upstream (or use the raw URL)
include snippets/proxy-common.conf;
# Jellyfin behind subpath specifics
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Prefix /jellyfin;
}
# ---- Jellyfin at /anime/ ----
location = /anime {
return 302 /anime/;
}
location /anime/ {
proxy_pass http://djellyfin_upstream/; # uses upstream (or use the raw URL)
proxy_next_upstream error timeout invalid_header http_502 http_503 http_504;
include snippets/proxy-common.conf;
# Jellyfin behind subpath specifics
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Prefix /anime;
}
# ---- Pi-hole admin at /admin/ ----
# Pi-holes UI lives under /admin/, so keep the trailing slash in proxy_pass.
location /admin/ {
proxy_pass http://pihole_upstream/admin/;
include snippets/proxy-common.conf;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_redirect off;
}
# Pi-hole API (some UI calls hit /api/)
location /api/ {
proxy_pass http://pihole_upstream/api/;
include snippets/proxy-common.conf;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_redirect off;
}
# redirect /watch-party -> /watch-party/
location = /watch-party {
return 302 /watch-party/;
}
# proxy ONLY /watch-party/*, keeping the prefix
location ^~ /watch-party/ {
proxy_pass http://watchparty_upstream; # ← no trailing slash (preserve /watch-party)
include snippets/proxy-common.conf;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Prefix /watch-party;
# For Vite HMR / websockets
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
# ---- qBittorrent at /qbt/ ----
location = /qbt {
return 302 /qbt/;
}
location ^~ /qbt/ {
proxy_pass http://qbt_upstream/;
include snippets/proxy-common.conf;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Prefix /qbt;
proxy_cookie_path / /qbt/;
proxy_redirect / /qbt/;
}
# ---- JDownloader2 at /jd2/ ----
location = /jd2 {
return 302 /jd2/;
}
location /jd2/ {
proxy_pass http://127.0.0.1:5800/;
include snippets/proxy-common.conf;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Prefix /jd2;
}
# ---- JDownloader-Bridge at /jd-bridge/ ----
location = /jd-bridge {
return 302 /jd-bridge/;
}
location /jd-bridge/ {
proxy_pass http://127.0.0.1:8088/;
include snippets/proxy-common.conf;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Prefix /jd-bridge;
}
# ---- Dashy convenience redirects (Dashy is served at /) ----
location = /dashy {
return 302 /;
}
location ^~ /dashy/ {
return 302 /;
}
# ---- Default: serve Dashy for everything else ----
# All more specific locations above (/admin/, /api/, /jellyfin/, etc.) will still win.
location / {
proxy_pass http://127.0.0.1:8084;
include snippets/proxy-common.conf;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
}
}