Developing with Merb or Sinatra ? Like web server nginx ? Ok, lets go.
Basically, Merb/Sinatra uses thin (based on eventmachine) server module, so it is working as stand-alone application. So, there is a way to connect nginx with these applications. Very simple – all you need to proxy requests to backend server. And all static files will be served by nginx.
upstream your_app {
server 127.0.0.1:YOUR_PORT_NUMBER;
}
server {
server_name YOUR_SERVERNAME;
listen 80;
charset utf-8;
client_max_body_size 64M; # maximum of proxied filesize (for uploads)
location / {
root /path/to/app/root;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect false;
if (-f $request_filename) {
break;
}
if (!-f $request_filename) {
proxy_pass http://your_app;
break;
}
}
# static content (images, flash, styles, etc.)
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|js|swf)$ {
root /path/to/your/public/dir;
access_log off;
}
}
Then, all you need – start your application in daemon mode. Dont forget to bind application server to listen only on local address (127.0.0.1).

