Files
iform-invenio/caddy/Caddyfile

112 lines
1.7 KiB
Caddyfile

{
admin off
debug
log {
level DEBUG
}
}
# Repo config
(repo_cors) {
header {
Access-Control-Allow-Origin *
Access-Control-Allow-Methods "GET, POST, PUT, PATCH, DELETE, OPTIONS"
Access-Control-Allow-Headers "*"
Access-Control-Allow-Credentials true
Strict-Transport-Security "max-age=15768000"
# Request ID tracing
+X-Request-ID {uuid}
}
}
(repo_common_proxy) {
# Set headers similar to uwsgi_param
header_up Host {host}
header_up X-Request-ID {uuid}
# Remove sensitive headers
header_down -X-Session-ID
header_down -X-User-ID
}
(repo_site) {
import repo_cors
# UI Server routes
handle / {
request_body {
max_size 100MB
}
reverse_proxy / repo-web-ui:5000 {
transport uwsgi
import repo_common_proxy
}
}
# API routes
handle /api/* {
request_body {
max_size 100MB
}
reverse_proxy / repo-web-api:5000 {
transport uwsgi
import repo_common_proxy
}
}
# Large file upload API routes
handle_path /api/records/*/draft/files/*/content {
request_body {
max_size 250GB
}
encode gzip
reverse_proxy / repo-web-api:5000 {
transport uwsgi
import repo_common_proxy
}
}
handle /static/* {
root * /opt/invenio/var/instance/static
file_server
}
handle /robots.txt {
root * /opt/invenio/var/instance/static
file_server
}
}
# Main site config
(site) {
@landing {
path / /contact* /about* /favicon.png
}
handle /_app/* {
reverse_proxy site:3000
}
handle @landing {
reverse_proxy site:3000 {
health_uri /health
health_interval 30s
health_timeout 10s
health_status 200
}
}
handle /repo* {
uri strip_prefix /repo
import repo_site
}
}
:80 {
import site
}
http://am-d-model.eu {
import site
}
am-d-model.eu {
import site
}