Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How do I forward the real visitors ip adress to Unicorn? The current setup is:

Haproxy => Nginx => Unicorn
  1. How can I forward the real IP address from Haproxy, to Nginx, to Unicorn? Currently it is always only
  2. I read that the X headers are going to be depreceated. - how will this impact us?

Haproxy Config:

# haproxy config
    log global
    mode    http
    option  httplog
    option  dontlognull
    option httpclose
    retries 3
    option redispatch
    maxconn 2000
    contimeout  5000
    clitimeout  50000
    srvtimeout  50000

# Rails Backend
backend deployer-production
    reqrep    ^([^\ ]*)\ /api/(.*)  \1\ /\2
    balance     roundrobin
    server      deployer-production localhost:9000 check

Nginx Config:

upstream unicorn-production {
  server unix:/tmp/unicorn.ordify-backend-production.sock fail_timeout=0;

server {
  listen 9000 default;
  server_name manager.ordify.localhost;
  root /home/deployer/apps/ordify-backend-production/current/public;
  access_log /var/log/nginx/ordify-backend-production_access.log;
  rewrite_log on;

  try_files $uri/index.html $uri @unicorn;

  location @unicorn {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_redirect off;
    proxy_pass http://unicorn-production;

    proxy_connect_timeout 90;
    proxy_send_timeout 90;
    proxy_read_timeout 90;

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
share|improve this question
Have you checked X-Real-IP header on Unicorn side? Is it always too? – Alex Jul 11 '12 at 11:30
up vote 4 down vote accepted

You should add option forwardfor to Haproxy config and configure nginx realip module:

share|improve this answer
Thanks. Using the forwardfor option and the realip module solved the problem. IPs are now appearing. – Hendrik Jul 12 '12 at 12:20

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.