88 lines
2.7 KiB
Plaintext
88 lines
2.7 KiB
Plaintext
server {
|
|
listen 80 default_server;
|
|
server_name _;
|
|
root /var/www/public;
|
|
index index.php index.html;
|
|
|
|
client_max_body_size 50M;
|
|
|
|
# Vite HMR WebSocket — Browser verbindet wss://domain:443/__vite_hmr
|
|
location = /__vite_hmr {
|
|
proxy_pass http://vite:5173;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
proxy_set_header Host $host;
|
|
proxy_read_timeout 3600s;
|
|
proxy_send_timeout 3600s;
|
|
}
|
|
|
|
# Vite dev server: JS/CSS assets + HMR client
|
|
location ~* ^/(@vite|@id|@fs|__vite|node_modules|resources/(js|css)/) {
|
|
proxy_pass http://vite:5173;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
}
|
|
|
|
# Reverb WebSocket: Browser verbindet wss://host/app/<key>
|
|
# NPM terminiert TLS, fox-nginx leitet an reverb:8080 weiter (Docker-Network).
|
|
location /app/ {
|
|
proxy_pass http://reverb:8080;
|
|
proxy_http_version 1.1;
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
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 3600s;
|
|
proxy_send_timeout 3600s;
|
|
}
|
|
|
|
# Reverb HTTP-API (serverseitiges Publish ginge auch direkt über reverb:8080,
|
|
# aber so geht's einheitlich über die Domain).
|
|
location /apps/ {
|
|
proxy_pass http://reverb:8080;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
}
|
|
|
|
location / {
|
|
try_files $uri $uri/ /index.php?$query_string;
|
|
}
|
|
|
|
location ~ \.php$ {
|
|
fastcgi_pass app:9000;
|
|
fastcgi_index index.php;
|
|
include fastcgi_params;
|
|
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
|
fastcgi_param DOCUMENT_ROOT $realpath_root;
|
|
fastcgi_read_timeout 300s;
|
|
fastcgi_send_timeout 300s;
|
|
}
|
|
|
|
location /storage/ {
|
|
alias /var/www/storage/app/public/;
|
|
try_files $uri =404;
|
|
}
|
|
|
|
location /audio/ {
|
|
alias /var/www/storage/app/audio/;
|
|
try_files $uri =404;
|
|
types {
|
|
audio/wav wav;
|
|
audio/mpeg mp3;
|
|
}
|
|
default_type audio/wav;
|
|
add_header Cache-Control "public, max-age=300";
|
|
}
|
|
|
|
location ~ /\.(?!well-known).* {
|
|
deny all;
|
|
}
|
|
|
|
gzip on;
|
|
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
|
|
}
|