Я пытаюсь внести в белый список IP-адреса, которые могут получить доступ к моему API. При этом я добавил промежуточное программное обеспечение для регистрации, которое документирует IP-адреса каждого запроса API:
function loggingMiddleware(req, res, next){
console.log(req.path+' request received from req.ip: ' + req.ip+ ', req.connection.remoteAddress: '+req.connection.remoteAddress+', req.secure: '+req.secure);
next();
}
(Вот некоторая документация для объекта Node.js req
).
Одобренным клиентом моего API является сайт, размещенный на страницах GitHub. Я знаю, что GitHub использует следующие IP-адреса для размещения сайтов на своей платформе:
- 185.199.108.153
- 185.199.109.153
- 185.199.110.153
- 185.199.111.153
Имея это в виду, когда вызывается мой API, я ожидаю, что промежуточное программное обеспечение регистрации сообщит, что один из IP-адресов в списке отправил запрос, однако это не так. Я использовал сайт GitHub Pages для отправки запроса, и была сделана следующая запись в журнале:
2019-03-16T23:43:35.094993+00:00 app[web.1]: / request received from req.ip: ::ffff:10.47.166.118, req.connection.remoteAddress: ::ffff:10.47.166.118, req.secure: false
(важная часть req.ip: ::ffff:10.47.166.118
)
Этот IP-адрес является частным и не относится к страницам GitHub.
Имея все это в виду, мои вопросы таковы: как это возможно, что req.ip
приводит к закрытому IP, когда я использовал страницы GitHub для выполнения запроса? Как правильно получить доступ к ожидаемому IP-адресу GitHub Pages?