~/ Self hosted project pages

Today I learned how to self-host gh-pages-esque project pages in an easy way using an nginx alias.

I have my main domain: http://jshawl.com/ which lives in /var/www/jshawl.com/

I wanted to be able to cd into that directory, clone any new repos, and if there is a gh-pages branch, serve it with the url as http://jshawl.com/project-name/.

Normally, this URL structure doesn't play nicely with jekyll sites, as jekyll compiles the site to the _site/ folder by default. The index.html file in /var/www/jshawl.com/project-name/ is the yaml-filled jekyll-ready index file, not the compiled file with all of my posts listed out.

Essentially, I wanted to set the document root of http://jshawl.com/project-name/ to /var/www/jshawl.com/project-name/_site/

Here's how I accomplished this task with an nginx alias:

server {
listen 80;
root /var/www/jshawl.com;
server_name jshawl.com;
index index.html;

location /project-name/ {
alias /var/www/jshawl.com/project-name/_site/;

In a later post, I'd like to explore the possibility of doing this automatically, perhaps with a try_files directive.

~/ Posted by Jesse Shawl on 2014-06-30