{% if www_membership_enabled %}
ProxyRequests Off
ProxyPreserveHost On
# Service sign-up buttons link to /members; the app lives under /members/.
# Absolute target: TLS ends at ingress, so a relative one becomes http://...:443
RedirectMatch 301 "^/members$" "https://{{ www_hostname }}/members/"
ProxyPass "/members/" "http://membership:8000/members/" connectiontimeout=5 timeout=120
ProxyPassReverse "/members/" "http://membership:8000/members/"
# NetworkPolicy permits only Apache to assert these headers.
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Membership-Client-IP "expr=%{REMOTE_ADDR}"
LimitRequestBody 262144
# The Tor/public static mirror remains available, but account/billing flows
# use only the canonical HTTPS origin registered in Dex and Stripe.
Require all denied
# Bounded JPEG upload plus multipart overhead; other routes remain 256 KiB.
LimitRequestBody 2097152
{% else %}
# Membership proxy disabled. Existing stateful workloads are not deleted.
Require all denied
{% endif %}