0

ElasticBeanstalk で実行されている Docker イメージのakka-spray背後にサーバーがあります。nginxこれでクライアントIPを取得しようとしています:

  (path("myip") & get) {
      clientIP {     
        ip => complete("Client's ip is " + ip.toOption.map(_.getHostAddress).getOrElse("unknown"))  
      }
  } ~

私の設定にもあります remote-address-header = on

私のngingx.conf

worker_processes 1;

events { worker_connections 1024; }

http {

    sendfile on;

    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }

    server {

        listen 80;

        location / {
            proxy_pass http://127.0.0.1:8080/;
            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_set_header   X-Forwarded-Host $server_name;
        }
    }
}

ブラウザーを/myipエンドポイントに向けると、間違った IP アドレスが表示されます。それは 172.something を与えています。これはロードバランサーだと思います。それは確かに私のブラウザではありません。以外のものを使用する必要があり.getHostAddressますか?rawipを使用すると、同じ、間違った値が得られます。ありがとう。

4

0 に答える 0