77 lines
2.7 KiB
Nginx Configuration File
77 lines
2.7 KiB
Nginx Configuration File
worker_processes auto;
|
|
|
|
events {
|
|
worker_connections 1024;
|
|
}
|
|
|
|
http {
|
|
include mime.types;
|
|
default_type application/octet-stream;
|
|
sendfile on;
|
|
keepalive_timeout 65;
|
|
gzip on;
|
|
gzip_types text/plain text/css application/javascript application/json application/wasm model/gltf-binary;
|
|
|
|
# Respect a proxy in front of this container (the user's own reverse proxy).
|
|
set_real_ip_from 0.0.0.0/0;
|
|
real_ip_header X-Forwarded-For;
|
|
|
|
server {
|
|
listen 80;
|
|
server_name _;
|
|
root /usr/share/nginx/html;
|
|
index index.html;
|
|
|
|
absolute_redirect off;
|
|
|
|
# 127.0.0.11 é o DNS interno do Docker. Usar uma variável no proxy_pass
|
|
# (em vez do hostname direto) força o nginx a resolver "anatomia-api"
|
|
# de novo a cada `valid=`, em vez de resolver uma única vez quando o
|
|
# worker sobe e cachear esse IP para sempre — sem isso, recriar o
|
|
# container anatomia-api (rebuild, restart) muda o IP dele e o nginx
|
|
# continua batendo no IP antigo até ser reiniciado manualmente.
|
|
resolver 127.0.0.11 valid=10s;
|
|
|
|
location /api/ {
|
|
set $api_upstream anatomia-api:3333;
|
|
# Sem caminho depois da variável: com proxy_pass "dinâmico" (via
|
|
# variável) o nginx não reescreve o prefixo da location — ele só
|
|
# repassa a URI original inteira. Como as rotas do Fastify já são
|
|
# registradas em /api/..., isso bate certinho sem precisar reescrever.
|
|
proxy_pass http://$api_upstream;
|
|
proxy_http_version 1.1;
|
|
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;
|
|
# Consultas grandes (milhares de estruturas) ou o host sob carga de
|
|
# outras aplicações podem passar de 60s (default do nginx).
|
|
proxy_read_timeout 300s;
|
|
proxy_send_timeout 300s;
|
|
}
|
|
|
|
location /models/ {
|
|
set $api_upstream anatomia-api:3333;
|
|
proxy_pass http://$api_upstream;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
proxy_read_timeout 300s;
|
|
proxy_send_timeout 300s;
|
|
# NÃO usar "immutable"/cache longo aqui: os arquivos .glb têm nome
|
|
# fixo por sistema (ex: muscular.glb) mas o CONTEÚDO muda toda vez
|
|
# que o pipeline roda de novo — com cache "immutable" o navegador
|
|
# nunca mais rebaixava a versão nova, mesmo com hard-refresh.
|
|
# "no-cache" ainda permite resposta 304 (rápida) quando o arquivo
|
|
# realmente não mudou, via ETag do @fastify/static.
|
|
add_header Cache-Control "no-cache";
|
|
}
|
|
|
|
# SPA fallback.
|
|
location / {
|
|
try_files $uri $uri/ /index.html;
|
|
}
|
|
}
|
|
}
|