4c9eacccb7
The landing service had no networks: key, so it joined the auto 'default'
network while proxy was only on spaceshell-network + webproxy — they shared no
network, so proxy_pass to 'landing' couldn't resolve. With a static
upstream{ server landing:80 } nginx fails to boot on an unresolvable name and
restart-loops, so the proxy flapped (page intermittently up/down). Fixes:
- landing now joins spaceshell-network (shared with proxy).
- proxy.conf resolves 'landing' at request time via Docker DNS (127.0.0.11)
using a variable proxy_pass, so nginx starts even if landing is briefly down.
nginx -t passes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
35 lines
1.3 KiB
Plaintext
35 lines
1.3 KiB
Plaintext
# Front nginx for spaceshell.ru — reverse-proxies the landing container and
|
|
# serves macOS .dmg downloads from the host-mounted ./download volume.
|
|
server {
|
|
listen 80;
|
|
listen [::]:80;
|
|
server_name spaceshell.ru www.spaceshell.ru;
|
|
|
|
# Resolve `landing` at request time via Docker's embedded DNS, so nginx
|
|
# starts even if the landing container is momentarily down (a static
|
|
# `upstream { server landing:80; }` makes nginx fail to boot when the name
|
|
# can't be resolved, restart-looping the proxy → flapping page).
|
|
resolver 127.0.0.11 valid=10s ipv6=off;
|
|
|
|
# Stable download URL: /download/spacesh.dmg → ./download/spacesh.dmg on host.
|
|
location /download/ {
|
|
alias /srv/download/;
|
|
autoindex off;
|
|
default_type application/octet-stream;
|
|
add_header Content-Disposition "attachment";
|
|
types {
|
|
application/x-apple-diskimage dmg;
|
|
}
|
|
}
|
|
|
|
location / {
|
|
# Variable in proxy_pass forces runtime resolution (with the resolver above).
|
|
set $landing http://landing:80;
|
|
proxy_pass $landing;
|
|
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 $scheme;
|
|
}
|
|
}
|