server { listen 80; server_name _; root /var/www/holos.backend/public; index index.php index.html; # Logging error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; # Gzip compression gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # Security headers add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; # Handle Laravel routes location / { try_files $uri $uri/ /index.php?$query_string; } # Handle PHP files location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass holos-backend:9000; # Nombre del servicio en docker-compose fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; # Timeouts para requests largos fastcgi_read_timeout 300; fastcgi_send_timeout 300; } # Handle static files with caching location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf|txt|tar|woff|woff2|ttf|svg|eot)$ { expires 1y; add_header Cache-Control "public, immutable"; try_files $uri =404; } # Handle storage files (Laravel storage link) location /storage { alias /var/www/holos.backend/storage/app/public; try_files $uri =404; } # Handle profile images location /profile { alias /var/www/holos.backend/storage/app/profile; try_files $uri =404; } # Handle images location /images { alias /var/www/holos.backend/storage/app/images; try_files $uri =404; } }