Files
imen_pishghaman/docker/nginx/gateway.conf.template
T
S. EsmaeiliandClaude Sonnet 5.5 3dc5f4ae91 fix(compose): give internal services unique network aliases
On a shared Docker network (Dokploy) plain service names like web or api
also resolve to other stacks' containers, so the gateway balanced requests
across foreign containers and returned 502. Services reached by name now
carry an imen-* alias, used by the gateway upstreams and the service URLs.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-25 08:28:04 +03:30

59 lines
1.8 KiB
Plaintext

# Front door for the whole stack. Rendered by the nginx image's envsubst at start-up
# (only ${SITE_DOMAIN}, ${ADMIN_DOMAIN} and ${S3_BUCKET} are replaced; nginx's own $vars stay).
# TLS is expected to be terminated in front of this container (host nginx / Traefik / CDN).
upstream web_upstream { server imen-web:3000; }
upstream api_upstream { server imen-api:4000; }
upstream admin_upstream { server imen-admin:80; }
upstream media_upstream { server imen-minio:9000; }
# keep the scheme reported by the TLS proxy in front, if any
map $http_x_forwarded_proto $forwarded_proto {
default $http_x_forwarded_proto;
"" $scheme;
}
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-Proto $forwarded_proto;
server {
listen 80;
server_name ${SITE_DOMAIN} www.${SITE_DOMAIN};
client_max_body_size 20m;
location /api/ { proxy_pass http://api_upstream; }
location /media/ {
proxy_pass http://media_upstream/${S3_BUCKET}/;
proxy_set_header Host minio:9000;
proxy_hide_header Set-Cookie;
}
# cache purge endpoint is only for the API (called over the internal network)
location /_internal/ { return 404; }
location / { proxy_pass http://web_upstream; }
gzip on;
gzip_proxied any;
gzip_types text/css application/javascript application/json application/xml image/svg+xml text/plain;
}
server {
listen 80;
server_name ${ADMIN_DOMAIN};
client_max_body_size 20m;
add_header X-Robots-Tag "noindex, nofollow" always;
location /api/ { proxy_pass http://api_upstream; }
location /media/ {
proxy_pass http://media_upstream/${S3_BUCKET}/;
proxy_set_header Host minio:9000;
}
location / { proxy_pass http://admin_upstream; }
}