回答編集履歴

1 ProxyProtocolについて設定例を追記

TaichiYanagiya

TaichiYanagiya score 8655

2016/02/10 12:44  投稿

default.conf の `proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;` 箇所でヘッダを追加していますので、この設定をはずせばいいです。
という単純な問題ではない?
という単純な問題ではない?
###(2016/02/10 12:40 追記)
ELB で ProxyProtocol を有効にした場合、nginx で listen ディレクティブに `proxy_protocol` を付ける必要があるようです。
とすると、ELB 80番ポートも HTTP から TCP に変更し、X-Forwarded-For の替わりに ProxyProtocol でアクセス元IPを拾うといいと思います。
```
(ELBリスナー設定)
   TCP 80 -> TCP 80
   SSL 443 -> TCP 80
   (インスタンス側 80番ポートについて ProxyProtocol を有効にする)
(ELBヘルスチェック設定)
   TCP:80
   (他は任意)
(nginx設定)
server {
   listen 80 proxy_protocol;
   set_real_ip_from  10.0.0.0/8;
   real_ip_header    proxy_protocol;
   (中略)
   location /socket.io/ {
       proxy_pass http://0.0.0.0:2000;
       #proxy_set_header X-Real-IP $remote_addr;   # こちらでもOK?
       proxy_set_header X-Real-IP $proxy_protocol_addr;
       proxy_read_timeout 150;
       proxy_set_header Host $host:$server_port;
       #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;   # こちらでもOK?
       proxy_set_header X-Forwarded-For $proxy_protocol_addr;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
   }
}
```
参考: [How to Configure NGINX to Accept the Proxy Protocol](https://www.nginx.com/resources/admin-guide/proxy-protocol/)
あるいは、現在の 80番ポートをそのまま利用するのであれば、ProxyProtocol 用に別のポートを用意する方法も考えられます。
```
(ELBリスナー設定)
   HTTP 80 -> HTTP 80
   SSL 443 -> TCP 8080
   (インスタンス側 8080番ポートについて ProxyProtocol を有効にする)
(ELBヘルスチェック設定)
   HTTP:80
   (他は任意)
(nginx設定)
server {
   listen 80;
   set_real_ip_from  10.0.0.0/8;
   real_ip_header    X-Forwarded-For;
   location / {
       proxy_pass http://0.0.0.0:1000;   # これは通常の HTML?
   }
}
server {
   listen 8080 proxy_protocol;
   set_real_ip_from  10.0.0.0/8;
   real_ip_header    proxy_protocol;
   location /socket.io/ {
       proxy_pass http://0.0.0.0:2000;
       # (他、1つ目の設定と同じ)
   }
}
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る