Nginx-ingress-config inline via compose configs.content
Coolify materialiseert bij een git-compose alleen de compose + .env, niet losse repo-bestanden -> een ./docker/nginx.conf bind-mount wordt een lege map (default nginx). Config nu inline (configs.content, $ als $$). docker/nginx.conf verwijderd. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
817a7cdf77
commit
492dbfa478
3 changed files with 74 additions and 69 deletions
|
|
@ -16,9 +16,12 @@ gedraaid, met **exact gepinde image-tags**:
|
||||||
|
|
||||||
- **Geen** registry-image, **geen** Forgejo Actions/CI (er wordt niets gebouwd).
|
- **Geen** registry-image, **geen** Forgejo Actions/CI (er wordt niets gebouwd).
|
||||||
- **Geen** host-watcher-entry — voeg OpnForm dus **niet** toe aan `deploy-watcher/watch.sh`.
|
- **Geen** host-watcher-entry — voeg OpnForm dus **niet** toe aan `deploy-watcher/watch.sh`.
|
||||||
- Coolify klont deze repo en draait `docker compose up`. De losse `docker/nginx.conf`
|
- Coolify klont deze repo en draait `docker compose up`.
|
||||||
wordt door Coolify **niet** geïnterpoleerd (bevat nginx-`$`-variabelen) — dáárom
|
- **Nginx-ingress-config staat INLINE in de compose** (top-level `configs:` →
|
||||||
git-based i.p.v. een raw compose-blok.
|
`content:`), niet als los bestand: Coolify materialiseert bij een git-compose
|
||||||
|
alleen de compose + `.env` in de app-map, niet de overige repo-bestanden — een
|
||||||
|
`./docker/nginx.conf`-bind-mount wordt dan een lege map. Inline is self-contained.
|
||||||
|
De nginx-`$`-variabelen zijn als `$$` geschreven (docker compose zet `$$`→`$`).
|
||||||
|
|
||||||
Zie ook de infra-skill `forgejo-coolify-pipeline` (§ OpnForm) en runbook
|
Zie ook de infra-skill `forgejo-coolify-pipeline` (§ OpnForm) en runbook
|
||||||
`runbooks/opnform-cx33.md`.
|
`runbooks/opnform-cx33.md`.
|
||||||
|
|
|
||||||
|
|
@ -160,12 +160,16 @@ services:
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
# Coolify: expose service 'ingress' op container-poort 80 achter het
|
# Coolify: expose service 'ingress' op container-poort 80 achter het
|
||||||
# toegewezen domein (Traefik + Let's Encrypt). Leeg = auto (sslip);
|
# toegewezen domein (Traefik + Let's Encrypt). Het echte domein zet je
|
||||||
# zet dit op https://forms.doc-gen.eu voor de cutover.
|
# in Coolify (docker_compose_domains), niet hier.
|
||||||
SERVICE_FQDN_INGRESS_80: ""
|
SERVICE_FQDN_INGRESS_80: ""
|
||||||
NGINX_MAX_BODY_SIZE: 64m
|
# De nginx-config staat INLINE (zie 'configs' onderaan) i.p.v. als
|
||||||
volumes:
|
# bind-mount: Coolify materialiseert bij een git-compose alleen de
|
||||||
- ./docker/nginx.conf:/etc/nginx/templates/default.conf.template:ro
|
# compose + .env in de app-map, niet losse repo-bestanden — een
|
||||||
|
# ./docker/nginx.conf-mount wordt dan een lege map. Inline is self-contained.
|
||||||
|
configs:
|
||||||
|
- source: nginx_conf
|
||||||
|
target: /etc/nginx/conf.d/default.conf
|
||||||
depends_on:
|
depends_on:
|
||||||
api:
|
api:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
|
|
@ -182,3 +186,62 @@ volumes:
|
||||||
postgres-data:
|
postgres-data:
|
||||||
opnform_storage:
|
opnform_storage:
|
||||||
redis-data:
|
redis-data:
|
||||||
|
|
||||||
|
# Nginx-ingress-config inline. Alle nginx-$-variabelen zijn als $$ geschreven
|
||||||
|
# zodat docker compose ze NIET interpoleert (compose zet $$ -> $ terug); pas de
|
||||||
|
# gerenderde config bevat de juiste nginx-variabelen. client_max_body_size is
|
||||||
|
# hardgecodeerd (64m). Upstreams via de compose SERVICE-namen api/ui.
|
||||||
|
configs:
|
||||||
|
nginx_conf:
|
||||||
|
content: |
|
||||||
|
map $$request_uri $$api_uri {
|
||||||
|
~^/api(/.*$$) $$1;
|
||||||
|
default $$request_uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name opnform;
|
||||||
|
root /usr/share/nginx/html/public;
|
||||||
|
client_max_body_size 64m;
|
||||||
|
|
||||||
|
access_log /dev/stdout;
|
||||||
|
error_log /dev/stderr error;
|
||||||
|
|
||||||
|
index index.html index.htm index.php;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_pass http://ui:3000;
|
||||||
|
proxy_set_header Host $$host;
|
||||||
|
proxy_set_header X-Real-IP $$remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $$proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Host $$host;
|
||||||
|
proxy_set_header X-Forwarded-Port $$server_port;
|
||||||
|
proxy_set_header X-Forwarded-Proto $$http_x_forwarded_proto;
|
||||||
|
proxy_set_header Upgrade $$http_upgrade;
|
||||||
|
proxy_set_header Connection "Upgrade";
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~/(api|open|local\/temp|forms\/assets)/ {
|
||||||
|
set $$original_uri $$uri;
|
||||||
|
try_files $$uri $$uri/ /index.php$$is_args$$args;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ \.php$$ {
|
||||||
|
fastcgi_split_path_info ^(.+\.php)(/.+)$$;
|
||||||
|
fastcgi_pass api:9000;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $$document_root/index.php;
|
||||||
|
fastcgi_param REQUEST_URI $$api_uri;
|
||||||
|
fastcgi_param HTTP_X_FORWARDED_FOR $$proxy_add_x_forwarded_for;
|
||||||
|
fastcgi_param HTTP_X_FORWARDED_HOST $$http_x_forwarded_host;
|
||||||
|
fastcgi_param HTTP_X_FORWARDED_PORT $$http_x_forwarded_port;
|
||||||
|
fastcgi_param HTTP_X_FORWARDED_PROTO $$http_x_forwarded_proto;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ /\. {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
# OpnForm ingress — HTTP<->FastCGI + routing.
|
|
||||||
# Upstreams via docker-compose SERVICE-namen (api/ui): die zijn altijd
|
|
||||||
# resolvbaar op het compose-netwerk, ook als Coolify de container-namen wijzigt.
|
|
||||||
# Dit bestand wordt als nginx-TEMPLATE gemount; alleen ${NGINX_MAX_BODY_SIZE}
|
|
||||||
# wordt door de nginx-entrypoint (envsubst) ingevuld. Alle andere $-tokens zijn
|
|
||||||
# nginx-variabelen en blijven ongemoeid (staan niet in de container-env).
|
|
||||||
|
|
||||||
map $request_uri $api_uri {
|
|
||||||
~^/api(/.*$) $1;
|
|
||||||
default $request_uri;
|
|
||||||
}
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name opnform;
|
|
||||||
root /usr/share/nginx/html/public;
|
|
||||||
client_max_body_size ${NGINX_MAX_BODY_SIZE};
|
|
||||||
|
|
||||||
access_log /dev/stdout;
|
|
||||||
error_log /dev/stderr error;
|
|
||||||
|
|
||||||
index index.html index.htm index.php;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_pass http://ui:3000;
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_set_header X-Forwarded-Host $host;
|
|
||||||
proxy_set_header X-Forwarded-Port $server_port;
|
|
||||||
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
|
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
|
||||||
proxy_set_header Connection "Upgrade";
|
|
||||||
}
|
|
||||||
|
|
||||||
location ~/(api|open|local\/temp|forms\/assets)/ {
|
|
||||||
set $original_uri $uri;
|
|
||||||
try_files $uri $uri/ /index.php$is_args$args;
|
|
||||||
}
|
|
||||||
|
|
||||||
location ~ \.php$ {
|
|
||||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
|
||||||
fastcgi_pass api:9000;
|
|
||||||
fastcgi_index index.php;
|
|
||||||
include fastcgi_params;
|
|
||||||
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
|
|
||||||
fastcgi_param REQUEST_URI $api_uri;
|
|
||||||
# Laravel accepteert deze headers alleen van IP's in TRUSTED_PROXIES.
|
|
||||||
# Zo blijft het echte client-IP + het https-schema achter Traefik/nginx behouden.
|
|
||||||
fastcgi_param HTTP_X_FORWARDED_FOR $proxy_add_x_forwarded_for;
|
|
||||||
fastcgi_param HTTP_X_FORWARDED_HOST $http_x_forwarded_host;
|
|
||||||
fastcgi_param HTTP_X_FORWARDED_PORT $http_x_forwarded_port;
|
|
||||||
fastcgi_param HTTP_X_FORWARDED_PROTO $http_x_forwarded_proto;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Weiger toegang tot .-bestanden
|
|
||||||
location ~ /\. {
|
|
||||||
deny all;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue