server {
	index index.php index.html;
	error_log  /var/log/nginx/error.log;
	access_log /var/log/nginx/access.log;
	root /application;
	client_max_body_size 1G;

    # 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;
	}

    # but allow access to react/dist
    location ~ ^/react/dist/.*$ {
        add_header "Cache-Control" "max-age=0; must-revalidate";
        try_files $uri $uri @redirectToIndex;
    }

	# 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 webbase-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;
	}

}