forked from colin/resume
45 lines
2.7 KiB
Caddyfile
45 lines
2.7 KiB
Caddyfile
# =====================================================================
|
|
# Caddyfile.local - Local development server configuration
|
|
# =====================================================================
|
|
# To manage the server, use the unified script:
|
|
# ./caddy.sh start # Start the server
|
|
# ./caddy.sh stop # Stop the server
|
|
# ./caddy.sh restart # Restart the server
|
|
# ./caddy.sh status # Check server status
|
|
#
|
|
# DO NOT run caddy directly from other directories as it may not find
|
|
# this configuration file correctly.
|
|
# =====================================================================
|
|
|
|
:8080 {
|
|
root * .
|
|
file_server
|
|
encode gzip
|
|
|
|
# Performance optimizations
|
|
header {
|
|
# Remove default Caddy headers
|
|
-Server
|
|
-X-Powered-By
|
|
|
|
# Basic security headers
|
|
X-Frame-Options "DENY"
|
|
X-Content-Type-Options "nosniff"
|
|
Referrer-Policy "strict-origin-when-cross-origin"
|
|
|
|
# Permissions policy
|
|
Permissions-Policy "accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=()"
|
|
|
|
# Cross-origin isolation headers
|
|
Cross-Origin-Embedder-Policy "require-corp"
|
|
Cross-Origin-Resource-Policy "same-origin"
|
|
Cross-Origin-Opener-Policy "same-origin"
|
|
|
|
# Cache control for static assets
|
|
Cache-Control "public, max-age=31536000, immutable"
|
|
|
|
# CSP with hashes for scripts and styles
|
|
Content-Security-Policy "default-src 'none'; script-src 'self' https://metrics.nixc.us 'sha256-oRCvBUmDTuPb8XOF1vLYwhIrcj2kzMbEwX5QzUPAPQI=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-uTJNJlctGr5GxR5DKnz1Ex31vH0TR93OFGloxbHe65g=' 'sha256-fOEWMJmrMxKbP5wElIXmDNUlfs6BSn+E9zt81T0Rysg=' 'sha256-q9ac7XWqnIASoBRfs4I4hpSMlnxGARofcEw0cSFfn/E=' 'sha256-+dDNTo7WAOmn2YC875+vn9oH4UkMwlVOGlARp2uq3A4=' 'sha256-1ZUvhca3M/N6hch4NrdPufDPLTnANOpJ4hfsZgRykgg=' 'sha256-UUDFHb6NI63nBRS2EmyJq4giwjTQGYPq7uSTB4UQnPc=' 'sha256-Ue6wom48SQbpmwW9QIk7pyVDR5Bg36SetP67V2pDkxc=' 'sha256-ryQsJ+aghKKD/CeXgx8jtsnZT3Epp3EjIw8RyHIq544=' 'sha256-8CNR2aPoRsO94LHwXXZzxijfMf15BfwUewt8hvVbPcE='; style-src 'self' 'sha256-5oTxos9Qxwhor3qIwHSM12YyIZi5E+tHuFdYER0hXoI=' 'sha256-807UZmWvd6eLc8xVckZkNX6CRP9WV8MzHURc5BgtRWo=' 'sha256-Y+6RTuKMnPfNa1TjCQCcFhxwo0G+xNy7t1MaAvn5SuU=' 'sha256-O+OMb48leSKvekhMTDUK1y6+WG9x33kA0eDw00wUwkY=' 'sha256-2EA12+9d+s6rrc0rkdIjfmjbh6p2o0ZSXs4wbZuk/tA=' 'sha256-kdaXPEOwTw3zyiuCzGv1vpohcW9SqOWq8k6gy2OWgtI='; img-src 'self' https://metrics.nixc.us data:; font-src 'self' data:; connect-src 'self' https://metrics.nixc.us; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';"
|
|
}
|
|
}
|