# Ein Server-Block fuer beide Spiegel. Die Ausgabe-Volumes der beiden # Sync-Container sind read-only unter /usr/share/nginx/html/{flatpak,dnf} # gemountet (siehe docker-compose.yml), die URL-Pfade entsprechen also 1:1 # den Verzeichnisnamen. server { listen 80; server_name _; root /usr/share/nginx/html; # Flatpak/OSTree macht sehr viele kleine Einzel-Requests (archive-z2). # Keep-Alive ist deshalb wichtig fuer akzeptable Performance. keepalive_timeout 65; keepalive_requests 1000; # Grosse Objekte/Static-Deltas und RPMs effizient ausliefern. sendfile on; tcp_nopush on; location = / { default_type text/plain; return 200 "flatpak: /flatpak/\ndnf: /dnf/\n"; } # --- Flatpak-Spiegel (OSTree-Repo, Volume flatpak-repo-data) ----------- location /flatpak/ { autoindex off; try_files $uri $uri/ =404; } # summary/summary.sig sind das Einzige, was flatpak bei jedem Zugriff neu # holt - nicht cachen, sonst sehen Clients neue Apps erst verzoegert. # Objekte darunter sind content-addressed und damit unveraenderlich. location ~* ^/flatpak/summary(\.sig|\.idx)?$ { add_header Cache-Control "no-cache"; } location ~* ^/flatpak/(objects|deltas)/ { expires 30d; add_header Cache-Control "public, immutable"; } # --- DNF-Spiegel (Volume dnf-repo-data) -------------------------------- location /dnf/ { autoindex on; } # repomd.xml (und dessen Signatur) ist der einzige Teil, den dnf bei jedem # Zugriff neu abruft - nicht cachen. Regex-Location gewinnt gegenueber der # Praefix-Location /dnf/ oben (nginx-Standardverhalten). Ein gemeinsames # Repo -> repodata liegt direkt unter /dnf/. location ~* ^/dnf/repodata/repomd\.xml(\.asc)?$ { add_header Cache-Control "no-cache"; } }