Как получить IP-адрес клиентского запроса на сервере Aqueduct Dart - PullRequest
0 голосов
/ 20 февраля 2020

Я делаю сервер Акведук. Я хотел бы знать IP-адрес клиентского запроса для журналов мониторинга и для предоставления общего содержимого на основе местоположения.

В Акведуке я не вижу, как получить IP-адрес.

Я собирался сказать, что я пробовал X, Y и Z, и это не сработало, но я только нашел ответ, поэтому добавлю его ниже.

1 Ответ

0 голосов
/ 20 февраля 2020

В вашем контроллере вы можете получить IP-адрес от Request.

String ipAddress = request.connectionInfo.remoteAddress.address;

Обратите внимание, что если ваш сервер работает за прокси nginx, вам придется настроить nxinx для пересылки реальный IP к акведуку. Для этого вы можете добавить заголовок X-Real-IP с удаленным адресом к вашему прокси-адресу API в блоке сервера.

location /api {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://127.0.0.1:8888;
    proxy_http_version 1.1;
}

Затем в Aqueduct вы можете получить IP-адрес из необработанных заголовков:

String ipAddress = request.raw.headers['x-real-ip'].first;

Подробнее здесь:

...