List Info

Thread: Nginx + Mongrel Multisite




Nginx + Mongrel Multisite
user name
2007-04-16 00:30:44
Hello list,
Does anyone have Mephisto running in multisite mode with
Nginx +
Mongrel? Rick has provided me a Nginx + FastCGI config, but
I can't
seem to hack it to work with mongrel.

So, is there anyone out there with a working config they
might like to share?

Thanks,
BJ Clark

--~--~---------~--~----~------------~-------~--~----~
Mephisto: http://mephistoblog.com |
Mephisto Help: http://mephisto.stikipad
.com

To post to this group, send email to MephistoBloggooglegroups.com
To unsubscribe from this group, send email to
MephistoBlog-unsubscribegooglegroups.com
For more options, visit this group at http
://groups-beta.google.com/group/MephistoBlog
-~----------~----~----~----~------~----~------~--~---


Re: Nginx + Mongrel Multisite
country flaguser name
United States
2007-04-16 13:18:18
hi Bj

this config works for me:

<code>

# user and group to run as
user  username group;

# number of nginx workers
worker_processes  6;

# pid of nginx master process
pid /usr/local/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 /usr/local/nginx/conf/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]
'
                  '"$request" $status 
$body_bytes_sent
"$http_referer" '
                  '"$http_user_agent"
"$http_x_forwarded_for"';

  # main access log
  access_log  /usr/local/nginx/logs/access.log  main;

  # main error log
  error_log  /usr/local/nginx/logs/error.log debug;

  # no sendfile on OSX
  sendfile on;

  # These are good default values.
  tcp_nopush        on;
  tcp_nodelay       off;
  # output compression saves bandwidth
  gzip            on;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_proxied any;
  gzip_types      text/plain text/html text/css
application/x-
javascript text/xml application/xml
application/xml+rss text/javascript;


  # 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 mephisto {
    server 127.0.0.1:8000;
    server 127.0.0.1:8001;
    server 127.0.0.1:8002;
  }

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

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

    # sets the domain[s] that this vhost server requests
for
    server_name domain1.tld domain2.tld;

    # doc root
    root ~/webapps/mephisto-0.7.3/public;

    # vhost specific access log
    access_log 
/usr/local/nginx/logs/nginx.mephisto.access.log  main;

    location / {
      # 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;
      proxy_set_header Host $http_host;
      proxy_redirect false;
      proxy_max_temp_file_size 0;

      # If the file exists as a static file serve it
directly without
      # running all the other rewite tests on it
      if (-f $request_filename) {
        break;
      }

      # 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://mephisto;
        break;
      }
    }

    error_page   500 502 503 504  /500.html;
    location = /500.html {
      root   ~/webapps/mephisto-0.7.3/public;
    }
  }


}



</code>


On Apr 16, 7:30 am, "BJ Clark" <scid...gmail.com> wrote:
> Hello list,
> Does anyone have Mephisto running in multisite mode
with Nginx +
> Mongrel? Rick has provided me a Nginx + FastCGI config,
but I can't
> seem to hack it to work with mongrel.
>
> So, is there anyone out there with a working config
they might like to share?
>
> Thanks,
> BJ Clark


--~--~---------~--~----~------------~-------~--~----~
Mephisto: http://mephistoblog.com |
Mephisto Help: http://mephisto.stikipad
.com

To post to this group, send email to MephistoBloggooglegroups.com
To unsubscribe from this group, send email to
MephistoBlog-unsubscribegooglegroups.com
For more options, visit this group at http
://groups-beta.google.com/group/MephistoBlog
-~----------~----~----~----~------~----~------~--~---


Re: Nginx + Mongrel Multisite
country flaguser name
United States
2007-04-16 23:03:55
BJ,

Here's a nginx multisite config that I'm currently using.
The starting
point was Rick's config from here: http://pastie.caboo.se/
13599. I'd
found that I had to change the 'break' statements in the
rewrite rules
to 'last' to get the page caching to work correctly. I'm
sure there's
room for improvement, but I have tested this to see whether
cached
pages are correctly served even if the mongrel cluster is
down.

(You'll need to turn multisite support on, of course). Here
goes:

#user and group to run as
user  nginx nginx;
# number of nginx workers
worker_processes  2;

# pid of nginx master process
pid        /var/run/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"';

    access_log      /var/log/nginx/localhost.access_log
main;
    error_log       /var/log/nginx/localhost.error_log;

    # 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 mephisto {
        server 127.0.0.1:8000;
        server 127.0.0.1:8001;
    }

    # output compression saves bandwidth
    gzip on;
    gzip_min_length  1100;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_types text/plain text/html text/css
application/x-javascript
text/xml application/xml application/xml+rss
text/javascript;

    server {
        listen 80;
        server_name  www.siteone.com www.sitetwo.com;

        root /home/web/site;
	access_log  /var/logs/nginx.mephisto.access.log  main;

        #Set the max size for file uploads to 50Mb
        client_max_body_size  50M;
        #Not sure if the index statement is required?
        index index.html;

        # Capistrano
        if (-f $document_root/maintenance.html) {
                  rewrite  ^(.*)$  /maintenance.html last;
                  break;
            }

        location / {
              # 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;
              proxy_set_header Host $http_host;
              proxy_redirect off;

              if (-f
$document_root/cache/$host$uri/index.html) {
                rewrite (.*) /cache/$host$1/index.html
last;
              }

              if (-f $document_root/cache/$host$uri.html) {
                rewrite (.*) /cache/$host$1.html last;
              }

              if (-f $document_root/cache/$host$uri) {
                rewrite (.*) /cache/$host$1 last;
              }

              proxy_pass http://mephisto;
        }

        location /admin {
              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 off;
              proxy_pass http://mephisto;
        }

        location ~ ^/assets/d+/ {
               rewrite ^/assets/(d+)/(.+)$
/assets/$host/$1/$2 last;
        }

        location /assets {}
        location /cache {}
	location ~ ^/(images|javascripts|stylesheets) {}

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


--~--~---------~--~----~------------~-------~--~----~
Mephisto: http://mephistoblog.com |
Mephisto Help: http://mephisto.stikipad
.com

To post to this group, send email to MephistoBloggooglegroups.com
To unsubscribe from this group, send email to
MephistoBlog-unsubscribegooglegroups.com
For more options, visit this group at http
://groups-beta.google.com/group/MephistoBlog
-~----------~----~----~----~------~----~------~--~---


[1-3]

about | contact  Other archives ( Real Estate discussion Medical topics )