upstream phpupstream { server php-fpm:9000 fail_timeout=5s max_fails=5; } resolver 127.0.0.11 ipv6=off; map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 80; server_name my-dev.eatvio.test; # change me client_max_body_size 108M; rewrite_log on; # access_log /var/log/nginx/application.access.log; access_log /dev/stdout; error_log /dev/stdout info; root /application/public; index index.php; # Vite HMR WebSocket and assets location /_vite { proxy_pass http://frontend:5173; proxy_http_version 1.1; # WebSocket support proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; # Headers 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; proxy_set_header X-Forwarded-Host $host; # Timeouts proxy_connect_timeout 7d; proxy_send_timeout 7d; proxy_read_timeout 7d; } # Production build assets location /build { try_files $uri $uri/ =404; expires 1y; add_header Cache-Control "public, immutable"; } # Prebuilt glossary: storage/app/glossary-exports/. Только X-Accel-Redirect из Laravel; прямой запрос — 404. location /internal/glossary-exports/ { internal; alias /application/storage/app/glossary-exports/; sendfile on; tcp_nopush on; default_type application/json; charset utf-8; gzip on; gzip_vary on; gzip_comp_level 5; gzip_min_length 256; gzip_types application/json; } # Дамп через FastCGI (не try_files → index.php). При prebuilt Laravel отдаёт X-Accel-Redirect → location выше. location ~ ^/api/glossaries/dump/?$ { gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 5; gzip_min_length 256; gzip_types application/json; fastcgi_pass phpupstream; fastcgi_index index.php; fastcgi_read_timeout 600s; fastcgi_param SCRIPT_FILENAME $document_root/index.php; fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log"; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; include fastcgi_params; } # try to serve file directly, fallback to index.php location / { try_files $uri /index.php$is_args$args; } location ~ \.php$ { #resolver 127.0.0.11; #set $upstream php-fpm:9000; #fastcgi_pass php-fpm:9000; # nginx will now start if host is not reachable fastcgi_pass phpupstream; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log"; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; include fastcgi_params; } } server { listen 80; server_name ws-my-dev.eatvio.test; # change me location / { proxy_pass http://soketi:6001; proxy_read_timeout 60; proxy_connect_timeout 60; proxy_redirect off; # Allow the use of websockets proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } error_log /dev/stdout info; access_log /dev/stdout; }