Using regular expressions within Nginx we can bind urls to particular application servers, below we will configure wordpress blog and django site to be deployed on same domain name with each having their respective application servers i.e. ‘fastcgi’ for wordpress and ‘uwsgi’ for django.
Short introduction on how nginx configuration works:
Consider the following basic configuration:
Django site is running using uwsgi app server, so django_site.sock is created at /home/ directory. When we hit djangoproject.com/foo then nginx looks for location block matching ‘foo’ string and serves the request with uwsgi.
So by replacing ‘foo’ with ‘blog’ and uwsgi server with fastcgi, nginx serves wordpress blog.
Configuration: django and wordpress blog on same domain:
Django project directory: /home/micropyramid/micropyramid
Uwsgi sock file location: /home/micropyramid/mp.sock
Wordpress project directory: /var/www/html
Fastcgi sock file location: /var/run/php5-fpm.sock
When the url contains the format ‘micropyramid.com/blog’ nginx matches location with /blog regex and uses fastcgi to serve wordpress blog, on all other cases django site will be served.