Had to install osTicket recently, and it had bit of a problems with the ajax requests returning 404.
This config should be enough to get you started, you might not even need to change it, well besides the obvious things like server name and root.
Ideally it shouldn’t have if blocks, but I am too lazy right now to refine it.
server { root /var/www/osticket/; index index.php index.html; listen 80; server_name domain.com; set $path_info ""; # Deny access to everything inside the include directory location ~ ^/include { deny all; return 403; } # Deny access to .htaccess location ~ /\.ht { deny all; } # Requests to /api/* need their PATH_INFO set, this does that if ($request_uri ~ "^/api(/[^\?]+)") { set $path_info $1; } # /api/*.* should be handled by /api/http.php if the requested file does not exist location ~ ^/api/(tickets|tasks)(.*)$ { try_files $uri $uri/ /api/http.php; } # /scp/ajax.php needs PATH_INFO too if ($request_uri ~ "^/scp/.*\.php(/[^\?]+)") { set $path_info $1; } # Catch requests to /scp/ajax.php/some/path and redirect them to ajax.php location ~ ^/scp/ajax.php/(.*)$ { try_files $uri $uri/ /scp/ajax.php; } # Set index.php as directory index location / { index index.php; } # PHP-FPM listening on 127.0.0.1:9001 or on a socket location ~ \.php$ { try_files $uri =404; fastcgi_pass 127.0.0.1:9001; #fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $path_info; include fastcgi_params; } }