All pastes #262094 Raw Edit

Something

public text v1 · immutable
#262094 ·published 2006-11-30 04:05 UTC
rendered paste body
# nginx.conf / ben myles / 2006
# user and group to run as
user rails rails;
# user nginx nginx;
# number of nginx workers
worker_processes  2;

# pid of nginx master process
pid        /var/log/nginx/logs/nginx.pid;

# Number of worker connections. 1024 is a good default
events {
    worker_connections  1024;
}

# start the http module where we config http access.
http {
        # pull in mime-types. You can break out your config
        # into as many include's as you want to make it cleaner
    include       /etc/nginx/mime.types;
    # set a default type for the rare situation that
    # nothing matches from the mimie-type include
    default_type  application/octet-stream;

    # configure log format
    log_format  main  '$remote_addr - $remote_user [$time_local] $status '
                      '"$request" $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "http_x_forwarded_for"';

# main access log
    access_log /var/log/nginx/logs/access.log main;
    # main error log
    error_log /var/log/nginx/logs/error.log debug;

    # no sendfile on OSX uncomment
    # this if your on linux or bsd
    sendfile        on;

    # These are good default values.
    tcp_nopush     on;
    keepalive_timeout 120;
    send_timeout      120;
    tcp_nodelay        on;

# this is where you define your mongrel clusters.
    # you need one of these blocks for each cluster
    # and each one needs its own name to refer to it later.
    upstream railshome {
        server 127.0.0.1:5001;
        server 127.0.0.1:5002;
        server 192.168.100.20;
    }

    # output compression saves bandwidth
    gzip on;
    gzip_min_length  1100;
    gzip_buffers     4 8k;
    gzip_types       text/plain text/html text/css text/js;

# the server directive is nginx's virtual host directive.
    server {
            # port to listen on. Can also be set to an IP:PORT
        listen       3000;

        # sets the domain[s] that this vhost server requests for
        server_name  bdminton.dontexist.com bdminton.dontexist.com;

        # doc root
        root /home/rails/sites;

        # vhost specific access log
        access_log  /var/log/nginx/logs/host.access.log  main;

        #Set the max size for file uploads to 50Mb
        client_max_body_size  50M;

# this rewrites all the requests to the maintenance.html
        # page if it exists in the doc root. This is for capistrano's
        # disable web task
                if (-f $document_root/maintenance.html){
                  rewrite  ^(.*)$  /maintenance.html last;
                  break;
            }

        location / {
          #root /Users/ez/nginx/public;
              # needed to forward user's IP address to rails
              proxy_set_header  X-Real-IP  $remote_addr;
              # needed for HTTPS
              proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
# check for index.html for directory index
          # if its there on the filesystem then rewite
          # the url to add /index.html to the end of it
          # and then break to send it to the next config rules.
              if (-f $request_filename/index.html) {
                rewrite (.*) $1/index.html break;
              }

          # this is the meat of the rails page caching config
          # it adds .html to the end of the url and then checks
          # the filesystem for that file. If it exists, then we
          # rewite the url to have explicit .html on the end
          # and then send it on its way to the next config rule.
          # if there is no file on the fs then it sets all the
          # necessary headers and proxies to our upstream mongrels
              if (-f $request_filename.html) {
                rewrite (.*) $1.html break;
              }

              if (!-f $request_filename) {
                              proxy_pass http://railshome;
                              break;
                            }
                      }


error_page   500 502 503 504  /50x.html;
                          location = /50x.html {
                              root   html;
                          }
                  }


        }
    }
}