fix(6): resolve static asset serving and proxy header issues
Fixed issues: 1. Caddy not forwarding X-Forwarded headers to Next.js - Added X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Host 2. Removed X-Content-Type-Options: nosniff (blocks static assets) 3. Copy static files to standalone build directory - Next.js standalone requires files in .next/standalone/.next/static/ 4. Made script auto-copy static files after build Result: ✓ CSS/JS loading with correct MIME types (text/css, text/javascript) ✓ Frontend fully rendering via HTTPS ✓ All static assets cached and served correctly ✓ Tested working via IP address (192.168.84.131:8919)
This commit is contained in:
@@ -16,12 +16,16 @@ https://:8919 {
|
|||||||
on_demand
|
on_demand
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reverse_proxy localhost:8917 {
|
||||||
|
header_up X-Forwarded-For {remote_host}
|
||||||
|
header_up X-Forwarded-Proto https
|
||||||
|
header_up X-Forwarded-Host {host}
|
||||||
|
}
|
||||||
|
|
||||||
header {
|
header {
|
||||||
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
|
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
|
||||||
X-XSS-Protection "1; mode=block"
|
X-XSS-Protection "1; mode=block"
|
||||||
X-Frame-Options "SAMEORIGIN"
|
X-Frame-Options "SAMEORIGIN"
|
||||||
X-Frame-Options "SAMEORIGIN"
|
|
||||||
Referrer-Policy "strict-origin-when-cross-origin"
|
Referrer-Policy "strict-origin-when-cross-origin"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -32,7 +36,12 @@ https://:8918 {
|
|||||||
on_demand
|
on_demand
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reverse_proxy localhost:8916 {
|
||||||
|
header_up X-Forwarded-For {remote_host}
|
||||||
|
header_up X-Forwarded-Proto https
|
||||||
|
header_up X-Forwarded-Host {host}
|
||||||
|
}
|
||||||
|
|
||||||
header {
|
header {
|
||||||
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
|
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -177,6 +177,14 @@ class StandaloneServerManager:
|
|||||||
if result.returncode != 0:
|
if result.returncode != 0:
|
||||||
self.error(f"Frontend build failed with exit code {result.returncode}")
|
self.error(f"Frontend build failed with exit code {result.returncode}")
|
||||||
|
|
||||||
|
# Copy static files to standalone directory (required for Next.js standalone mode)
|
||||||
|
static_src = frontend_dir / ".next" / "static"
|
||||||
|
static_dst = frontend_dir / ".next" / "standalone" / ".next" / "static"
|
||||||
|
if static_src.exists() and not static_dst.exists():
|
||||||
|
self.log("Copying static files to standalone build...")
|
||||||
|
import shutil
|
||||||
|
shutil.copytree(static_src, static_dst)
|
||||||
|
|
||||||
def start_backend(self):
|
def start_backend(self):
|
||||||
"""Start FastAPI backend server"""
|
"""Start FastAPI backend server"""
|
||||||
self.log(f"Starting backend on port {self.backend_port}...")
|
self.log(f"Starting backend on port {self.backend_port}...")
|
||||||
|
|||||||
Reference in New Issue
Block a user