This is a simple configuration example to replicate the .htaccess rules for NibbleBlog 4.0.3.
For those unfamiliar with NibbleBlog:
Nibbleblog is a powerful engine for creating blogs, all you need is PHP to work. Very simple to install and configure (only 1 step).
Nginx Configuration Example
Tested on Nginx 1.7.3
server { listen 0.0.0.0:80; root /path/to/public_html; server_name domain.com www.domain.com; # Directory indexing is disabled by default # So no need to disable it, unless you enabled it yourself # access log turned off for speed access_log off; #enable if you need it error_log /var/log/nginx/nib.error.log; #or path to your error log error_page 404 = /index.php?controller=page&action=404; # main location block location / { expires 7d; try_files $uri $uri/ @rewrites; } # rewrite rules if file/folder did not exist # based off rules for version 4.0.3's .htaccess location @rewrites { rewrite ^/category/([^/]+)page-([0-9+])$ /index.php?controller=blog&action=view&category=$1&number=$2 last; rewrite ^/category/([^/]+)/$ /index.php?controller=blog&action=view&category=$1&number=0 last; rewrite ^/tag/([^/]+)/page-([0-9]+)$ /index.php?controller=blog&action=view&tag=$1&number=$2 last; rewrite ^/tag/([^/]+)/$ /index.php?controller=blog&action=view&tag=$1&number=0 last; rewrite ^/page-([0-9]+)$ /index.php?controller=blog&action=view&number=$1 last; rewrite ^/post/([^/]+)/$ /index.php?controller=post&action=view&post=$1 last; rewrite ^/post-([0-9]+)/(.*)$ /index.php?controller=post&action=view&id_post=$1 last; rewrite ^/page/([^/]+)/$ /index.php?controller=page&action=view&page=$1 last; rewrite ^/feed/$ /feed.php last; rewrite ^/([^/]+)/$ /index.php?controller=page&action=$1 last; # if any of the redirects/urls above contain a *.php file in the url # then you may have to create a separate location ~ ^/post-([0-9]+)/, etc block # otherwise the php block will be invoked before this @rewrites block does } # cache control for static files location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { expires max; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } # files to block or handle differently # Don't log commonly requested files that may not always exist location = /robots.txt { access_log off; log_not_found off; } location = /favicon.ico { access_log off; log_not_found off; } # block access to these files (shadow.php, keys.php, hidden/tmp files, xml files) location ~ /shadow\.php { access_log off; log_not_found off; deny all; } # block access to shadow.php location ~ /keys\.php { access_log off; log_not_found off; deny all; } # block access to keys.php location ~ /\. { access_log off; log_not_found off; deny all; } # block access to hidden files (starting with .) location ~ ~$ { access_log off; log_not_found off; deny all; } # block access to vim temp files (starting with ~) location ~ \.xml { access_log off; log_not_found off; deny all; } # block access to xml files # typical PHP handling block # with a safeguard against passing a non-existent # php file to the PHP interpreter location ~ \.php$ { try_files $uri =404; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $request_filename; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_pass 127.0.0.2:9000; #fastcgi_pass unix:/tmp/php.sock; #use the above line instead if running php-fpm on a socket } }
This should work pretty well as long as the newest NibbleBlog does not utilize php file names in the friendly urls (from my testing, it no longer does that).
Also Friendly URLs are not enabled by default in NibbleBlog, you need to enable it under SEO tab under settings. (ignore the instructions regarding .htaccess since you’re not using apache).