title: How to forward request IP from NGINX to node.js application?
body: <p>I have NGINX running as reverse proxy which forwards all http and https traffic to my node.js application, which listens to localhost:port</p>
  
  <p>However the issue I have is that the node.js application sees all incoming requests as coming from ::ffff:127.0.0.1</p>
  
  <p>How can I change the NGINX config such that the real IP will be passed through and forwarded to the node.js application?</p>
  
  <pre><code>server {
      listen 80;
      listen [::]:80;
      listen 443;
      listen [::]:443;
  
      root /var/www/example.com/html;
      index index.html index.htm;
  
      server_name example.com;
  
  location / {
  proxy_set_header X-Real-IP $remote_addr;
      proxy_pass http://localhost:myport;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection 'upgrade';
      proxy_set_header Host $host;
      proxy_cache_bypass $http_upgrade;
  }
  
   # Requests for socket.io are passed on to Node on port x
    location ~* \.io {
    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_set_header X-NginX-Proxy true;
  
    proxy_pass http://localhost:myport;
    proxy_redirect off;
  
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
  
  
  }
  </code></pre>
  
  <p>Edit: The express.js/node.js application processes req.ip and has app.enable('trust proxy'); at startup</p>