Something Strange


#1

Hello All -

I’m having a very strange issue and maybe someone has experienced it or
knows the solutions.

I’ll try to be brief. I have two clusters; we’ll call them cluster 1 &
2.

When I run the configuration everything appears to work.

But the strange this is that it will only work if I use the URL and not
the IP. If i use the IP address it defaults to the other
cluster…very strange…here’s my config to get a better picture.

user www-data;
worker_processes 2;

pid of nginx master process

pid /var/run/nginx.pid;

uknown directive

#worker_rlimit_nofile 8192;
events {
worker_connections 4096;
# use epoll;
}
http {
# Allow long server names
server_names_hash_bucket_size 128;
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format   main '$remote_addr - $remote_user [$time_local] $status 


'"$request" $body_bytes_sent “$http_referer” ’
‘"$http_user_agent" “$http_x_forwarded_for”’;
# main log files
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx_error.log debug;
# spool uploads to disk instead of clobbering downstream servers
# client_body_temp_path /var/spool/nginx-client-body 1 2;
# client_max_body_size 32m;
# client_body_buffer_size 128k;

server_tokens       off;
keepalive_timeout   5;


# no sendfile on OSX
sendfile     on;
# Optimized default values
tcp_nopush   on;
tcp_nodelay  off;

# compression saves bandwidth
gzip               on;
gzip_http_version 1.0;
gzip_comp_level     2;
gzip_proxied      any;
gzip_min_length  1100;
gzip_buffers  16 8k;
gzip_types      text/plain text/html text/css 

application/x-javascript text/xml application/xml application/xml+rss
text/javascript;
gzip_disable “MSIE [1-6].(?!.*SV1)”;
gzip_vary on;
# proxy settings
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;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

upstream cluster1 {
ip_hash;
       server 10.100.50.72:80;
       server 10.100.50.78:80;
       }
include    /etc/nginx/cluster1/cluster1.conf;

upstream cluster2 {
ip_hash;
       server 10.100.50.73:80;
       server 10.100.50.79:80;
       }
include    /etc/nginx/cluster2/cluster2.conf;

}

Here are my two includes:

server {
listen 80;
server_name 10.100.50.13 cluster1.nowhere.net;
access_log /var/log/nginx/cluster1.access.log main;
location / {
proxy_pass http://cluster1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/nginx-default;
}
}

server {
listen 80;
server_name 10.100.50.14 cluster2.nowhere.net;
access_log /var/log/nginx/cluster2.access.log main;
location / {
proxy_pass http://cluster2;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/nginx-default;
}
}

So in the ‘include’ files you’ll notice i have the URL’s. If keep the
URL’s in the configuration everythign works fine.
However if I just want to use the IP it defaults to the first conf file

Example: server_name 10.100.50.14;

Will always mysteriously just default to 10.100.50.13…

Any help would be appreciated.

-Shamunda

***** Email confidentiality notice *****

26/1/2009

This message is private and confidential. If you have recieved this
message in error, please notify us and remove it from your system.


#2

On Mon, Jan 26, 2009 at 04:30:43PM -0500, Shamunda wrote:

user www-data;
# Allow long server names
# spool uploads to disk instead of clobbering downstream servers
# Optimized default values
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
proxy_read_timeout 90;
include /etc/nginx/cluster1/cluster1.conf;
Here are my two includes:
}
location / {

So in the ‘include’ files you’ll notice i have the URL’s. If keep the URL’s in the configuration everythign works fine.
However if I just want to use the IP it defaults to the first conf file

Example: server_name 10.100.50.14;

Will always mysteriously just default to 10.100.50.13…

Any help would be appreciated.

server_name is used to test “Host” header.
The IP address will be in the header only if you enter
http://10.100.50.14/ in browser.

You need something like:

server {
     listen       10.100.50.14:80;
     server_name  cluster2.nowhere.net;

http://wiki.codemongers.com/NginxHttpCoreModule#listen
http://wiki.codemongers.com/NginxHttpCoreModule#server_name