Allan & Steve are the chubby founders of LessEverything. This is their blog, hear them rant, praise, give advice and talk about Just Stuff, Less Accounting, Lovd by Less, More Honey, Events, Less Memories, Code, Business, Design, Marketing

One last thing about nginx -- how to config many sites

written by Steven Bristol on March 25th, 2007

This happened a bit ago, and I am only now finding the time to blog it. Ezra's example wasn't quite clear regarding how to set up nginx for multiple sites, so I asked him. It was perfectly clear after he answered that each site or port needs it's own upstream and server directives:



user  blah;
worker_processes  6;
error_log  logs/error.log  debug;
pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       conf/mime.types;
    default_type  application/octet-stream;
.......

    upstream mongrel_site_one {
        server 127.0.0.1:15001;
        server 127.0.0.1:15002;
    }
    server {
        listen          real_ip_number:80;
        root            /rails/site_one/current/public;
        server_name   www.site_one.com site_one.com;
         ........
            if (!-f $request_filename) {
            proxy_pass http://mongrel_site_one;
                break;
            }
         } #server


    upstream mongrel_site_two {
        server 127.0.0.1:15003;
        server 127.0.0.1:15004;
    }
    server {
        listen          real_ip_number:80;
        root            /rails/site_two/current/public;
        server_name   www.site_two.com site_two.com;
         ........
            if (!-f $request_filename) {
            proxy_pass http://mongrel_site_two;
                break;
            }
         } #server
} #http

Also note that if you are going to run ssl, you will need an extra server block for the ssl config, which listens on 443.

Thanks again to Ezra for this one.

Leave a Reply