Nginx virtual hosts + mongrel cluster +strange problem


#1

hi all!

I have a dedicated host for my web application
I want to run 2 rails applications with the following adress

http://www.8ansapres.fr and
http://blog.8ansapres.fr

on my server applications have the following path
/home/alpaga/8ansapres.fr/current/
/home/alpaga/blog.8ansapres.fr/

my nginx.conf look like this

user alpaga;

worker_processes 4;

pid /var/run/nginx.pid;

events {
worker_connections 8192;
use epoll; # linux only!
}

http {

include /etc/nginx/mime.types;

default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] ’
'"$request" $status $body_bytes_sent “$http_referer” ’
‘"$http_user_agent" “$http_x_forwarded_for”’ ;

access_log /var/log/nginx/access.log main;

error_log /var/log/nginx/error.log notice;

sendfile on;

tcp_nopush on;
tcp_nodelay on;

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;

include /etc/nginx/sites-enabled/*;
}

my first virtual host:

Load balance to mongrels

upstream mongrel_cluster {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
}

Begin virtual host configuration

server {

Familiar HTTP settings

listen 80;
server_name www.8ansapres.fr;
root /home/alpaga/8ansapres.fr/current/public;
access_log /var/log/nginx/8ansapres.fr.access.log;
error_page 500 502 503 504 /500.html;
client_max_body_size 50M;

First rewrite rule for handling maintenance page

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

location / {
index index.html index.htm;
# Forward information about the client and host
# Otherwise our Rails app wouldn’t have access to it
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_max_temp_file_size 0;
# Directly serve static content
location ~ ^/(images|javascripts|stylesheets)/ {
expires 10y;
}
if (-f $request_filename) {
break;
}
# Directly serve cached pages
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
# Otherwise let Mongrel handle the request
if (!-f $request_filename) {
proxy_pass http://mongrel_cluster;
break;
}
}
}

my second virtual host:

Load balance to mongrels

upstream mongrel_cluster_two {
server 0.0.0.0:8000;
server 0.0.0.0:8001;
server 0.0.0.0:8002;
}

Begin virtual host configuration

server {

Familiar HTTP settings

listen 80;
server_name blog.8ansapres.fr;
root /home/alpaga/blog.8ansapres.fr/public;
access_log /var/log/nginx/blog.8ansapres.fr.access.log;
error_page 500 502 503 504 /500.html;
client_max_body_size 50M;

First rewrite rule for handling maintenance page

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

location / {
index index.html index.htm;
# Forward information about the client and host
# Otherwise our Rails app wouldn’t have access to it
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_max_temp_file_size 0;
# Directly serve static content
location ~ ^/(images|javascripts|stylesheets)/ {
expires 10y;
}
if (-f $request_filename) {
break;
}
# Directly serve cached pages
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
# Otherwise let Mongrel handle the request
if (!-f $request_filename) {
proxy_pass http://mongrel_cluster_two;
break;
}
}
}

my mongrel_cluster files

application 1

port: “8000”
pid_file: tmp/pids/mongrel.pid
servers: 3
cwd: /home/alpaga/8ansapres.fr/current/
log_file: log/mongrel.log
environment: production
address: 127.0.0.1
servers: 3
docroot: public

application 2

port: “8003”
pid_file: tmp/pids/mongrel.pid
servers: 3
cwd: /home/alpaga/blog.8ansapres.fr/
log_file: log/mongrel.log
environment: production

address: 0.0.0.0
servers: 3
docroot: public

the first application (8ansapres.fr) run very well but i can’t access
the second one.
However, I can access the second application with
http://www.8ansapres.fr:8003/

I did many tests and it’s seems I cant’ access to
http://blog.8ansapres.fr/

I really don’t know were I’am wrong

Do I have to add the subdomain with the registar or something like this
?

thank you very much for your help

the error.log is blank and in blog.8ansapres.fr.access.log i have :

80.96.123.27 - - [21/Nov/2008:22:55:06 +0100] “GET
/w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1” 400 173 “-” “-”
80.96.121.241 - - [21/Nov/2008:22:56:09 +0100] “GET
/w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1” 400 173 “-” “-”


#2

Sorry about the late reply. Did you fix it?

Try changing:

Load balance to mongrels

upstream mongrel_cluster_two {
server 0.0.0.0:8000;
server 0.0.0.0:8001;
server 0.0.0.0:8002;
}

to

Load balance to mongrels

upstream mongrel_cluster_two {
server 0.0.0.0:8003;
server 0.0.0.0:8004;
server 0.0.0.0:8005;
}


#3

Excellent !!! it works, thanks you very much Dom !