RimuHosting Forums  

Go Back   RimuHosting Forums > Share Knowledge

Reply
 
Thread Tools Display Modes
  #1  
Old 11-26-2006, 11:37 AM
dorkalev dorkalev is offline
Junior Member
 
Join Date: Nov 2006
Location: Israel
Posts: 1
Smile nginx + several mongrels

Hi,
I just finished installing 2 Rails websites running on mongrel with Nginx as a load-balancer. The installation is easy (once you understand what you are doing) and the final result works like a charm.

The final Result:
Two Rails websites running on mongrel on a local IP, each in a cluster of two ports.
An Nginx server is serving each website to the outside world.

Site A runs on 127.0.0.1:8000 & 127.0.0.1:8001
Site B runs on 127.0.0.1:7000 & 127.0.0.1:7001

Nginx Serving site A @ http://www.sitea.com (spreading the load between 127.0.0.1 ports 8000 & 8001)

Nginx Serving site B @ http://www.siteb.com (spreading the load between 127.0.0.1 ports 7000 & 7001)

The way:
1. Install Mongrel, Mongrel Cluster and Nginx as explained @ integral thoughts (notice the current version of Nginx is newer than 3.6)
2. for site A use: mongrel_rails cluster::configure -p 8000 -e production -a 127.0.0.1 where needed
3. for site A use: mongrel_rails cluster::configure -p 7000 -e production -a 127.0.0.1 where needed
4. run both mongrels
5. In the nginx.conf file write:
worker_processes 2;

error_log logs/error.log notice;
pid logs/nginx.pid;

events {
worker_connections 1024;
}

http {
include conf/mime.types;
default_type application/octet-stream;

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

keepalive_timeout 65;
tcp_nodelay on;

upstream site-a {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
}

upstream site-b {
server 127.0.0.1:7000;
server 127.0.0.1:7001;
}

gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;

server {
listen 80;
server_name site-b.com;
access_log off;

# / -> first search for local index.html then go to site-b
location ~ ^/$ {
if (-f /index.html){
rewrite (.*) /index.html last;
}
proxy_pass http://site-b;
}

# rail caching: searching first for $action.html local pages
location / {
if (!-f $request_filename.html) {
proxy_pass http://site-b;
}
rewrite (.*) $1.html last;
}

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2| doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|j s$
root /var/www/site-b/public;
}

# resend everything else to site-b
location / {
proxy_pass http://site-b;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

server {
listen 80;
server_name site-b.com;
root /var/www/site-b/public;

access_log off;
rewrite_log on;

# / -> first search for local index.html then go to
location ~ ^/$ {
if (-f /index.html){
rewrite (.*) /index.html last;
}
proxy_pass http://site-b;
}

# rail caching: searching first for $action.html local pages
location / {
if (!-f $request_filename.html) {
proxy_pass http://site-b;
}
rewrite (.*) $1.html last;
}


# serve static files directly
location ~ .html {
root /var/www/site-b/public;
}

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2| doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|j s$
root /var/www/site-b/public;
}

# resend everything else to site-b
location / {
proxy_pass http://site-b;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}
}
6. check the nginx.conf file:
nginx -t -c nginx.conf
7. if its fine just run it:
nginx -c nginx.conf
8. enjoy!

Dor.

Last edited by dorkalev; 11-26-2006 at 03:37 PM.
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 03:35 PM.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.