worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } location / { root html; index index.php; if (!-e $request_filename){ rewrite ^(.*)$ /index.php last; } } # if you want grav in a sub-directory of your main site # (for example, example.com/mygrav) then you need this rewrite: location /mygrav { index index.php; if (!-e $request_filename){ rewrite ^(.*)$ /mygrav/$2 last; } try_files $uri $uri/ /index.php?$args; } # if using grav in a sub-directory of your site, # prepend the actual path to each location # for example: /mygrav/images # and: /mygrav/user # and: /mygrav/cache # and so on location /images/ { # Serve images as static } location /user { rewrite ^/user/accounts/(.*)$ /error redirect; rewrite ^/user/config/(.*)$ /error redirect; rewrite ^/user/(.*)\.(txt|md|html|php|yaml|json|twig|sh|bat)$ /error redirect; } location /cache { rewrite ^/cache/(.*) /error redirect; } location /bin { rewrite ^/bin/(.*)$ /error redirect; } location /backup { rewrite ^/backup/(.*) /error redirect; } location /system { rewrite ^/system/(.*)\.(txt|md|html|php|yaml|json|twig|sh|bat)$ /error redirect; } location /vendor { rewrite ^/vendor/(.*)\.(txt|md|html|php|yaml|json|twig|sh|bat)$ /error redirect; } # Remember to change 127.0.0.1:9000 to the Ip/port # you configured php-cgi.exe to run from location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } }