NGINX Configuration
At this point it is assumed that you already have installed and configured nginx and have a basic understanding of nginx.
This is an incomplete/rough guide, but it should help you get Directus installed and set up on nginx. It was tested on: Ubuntu 14.04.1 - nginx/1.4.6 (Ubuntu)
See the Directus nginx configuration
Site configuration
Since nginx doesn't use .htaccess, which does the url rewriting, we therefore need to do the rewrite within nginx itself. Below we configure an nginx server block.
Open the default server block file:
sudo vim /etc/nginx/sites-available/default
The nginx server block should look like this:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /path/to/directus;
index index.php index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
Change location / to this:
location / {
try_files $uri $uri/ /index.php$args;
}
Add a new location:
location /api {
if (!-e $request_filename) {
rewrite ^/1/extensions/([^/]+) /api/api.php?run_extension=$1 last;
}
rewrite ^ /api/api.php?run_api_router=1 last;
}
Add another location to prevent uploaded php/html files to execute.
location ~ ^/(media|storage)/.*\.(php|phps|php5|htm|shtml|xhtml|cgi.+)?$ {
add_header Content-Type text/plain;
}
Extensions
To prevent direct access to extensions api.php file we need to edit /etc/nginx/sites-available/default and add a new location:
location ~* [^/]+/customs/extensions/api\.php$ {
return 403;
}
Custom endpoints
Prevent direct access to api endpoint files.
location ~* /customs/endpoints/ {
deny all;
}
Fonts Mime types
To serve fonts mime types correctly we need to edit /etc/nginx/mime.types and add these lines in it:
application/vnd.ms-fontobject eot;
font/truetype ttf;
font/opentype otf;
font/woff woff;
PHP Values [TODO]
The result of these two files (/etc/nginx/mime.types, /etc/nginx/sites-available/default) and can be found in here config/nginx