75 lines
1.1 KiB
Caddyfile
75 lines
1.1 KiB
Caddyfile
{
|
|
admin off
|
|
email {$ACME_EMAIL}
|
|
}
|
|
|
|
malenia.space {
|
|
encode zstd gzip
|
|
|
|
log {
|
|
output stdout
|
|
format json
|
|
}
|
|
|
|
header {
|
|
Strict-Transport-Security "max-age=31536000; includeSubDomains"
|
|
X-Content-Type-Options "nosniff"
|
|
X-Frame-Options "DENY"
|
|
Referrer-Policy "strict-origin-when-cross-origin"
|
|
Permissions-Policy "camera=(), geolocation=(), microphone=()"
|
|
}
|
|
|
|
@api path /api/*
|
|
handle @api {
|
|
route {
|
|
rate_limit {
|
|
zone auth {
|
|
match {
|
|
path /api/auth/login /api/auth/signup /api/auth/refresh
|
|
}
|
|
key {remote_host}
|
|
events 10
|
|
window 1m
|
|
ipv6_prefix 64
|
|
}
|
|
zone checkout {
|
|
match {
|
|
path /api/orders/checkout
|
|
}
|
|
key {remote_host}
|
|
events 10
|
|
window 10m
|
|
ipv6_prefix 64
|
|
}
|
|
zone payment_callback {
|
|
match {
|
|
path /api/payments/pally/result
|
|
}
|
|
key {remote_host}
|
|
events 60
|
|
window 1m
|
|
ipv6_prefix 64
|
|
}
|
|
zone api {
|
|
match {
|
|
not path /api/health/
|
|
}
|
|
key {remote_host}
|
|
events 120
|
|
window 1m
|
|
ipv6_prefix 64
|
|
}
|
|
}
|
|
|
|
uri strip_prefix /api
|
|
reverse_proxy backend:8000
|
|
}
|
|
}
|
|
|
|
handle {
|
|
root * /srv
|
|
try_files {path} /index.html
|
|
file_server
|
|
}
|
|
}
|