Как получить IP-адрес клиентского запроса на сервере Aqueduct Dart

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

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

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


person Suragch    schedule 20.02.2020    source источник


Ответы (1)


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

String ipAddress = request.connectionInfo.remoteAddress.address;

Обратите внимание: если ваш сервер работает за прокси-сервером nginx, вам необходимо настроить nxinx для пересылки реального IP-адреса в Aqueduct. Для этого вы можете добавить заголовок 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;

Больше информации здесь:

person Suragch    schedule 20.02.2020