server { index index.php index.html; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /application; # rewrite error codes error_page 400 /index.php?error=400; error_page 403 /index.php?error=403; error_page 404 /index.php?error=404; error_page 500 /index.php?error=500; # rewrite api rewrite ^/(api(/.*)?)$ /index.php?api=$1; # deny access to .gitignore / .htaccess location ~ /\.(?!well-known).* { rewrite ^(.*)$ /index.php?site=$1; } # deny access to docker-compose.yml location /docker-compose.yml { rewrite ^(.*)$ /index.php?site=$1; } # deny access to specific directories location ~ ^/(files/uploaded|react|docker|Site|Core|test)/.*$ { rewrite ^(.*)$ /index.php?site=$1; } # caching location ~ ^/(static|js|css)/.*$ { add_header "Cache-Control" "max-age=0; must-revalidate"; } # try to find the specified file location / { try_files $uri $uri @redirectToIndex; } # redirect to index.php location @redirectToIndex { rewrite ^(.*)$ /index.php?site=$1; } # serve .php files location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass php:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } }