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
を使用すると、同じ、間違った値が得られます。ありがとう。