Итак, я получил простую настройку с nginx для статических носителей и балансировки нагрузки и торнадо в качестве веб-сервера для django (4 сервера). Моя проблема remote_addr не получает передается на Джанго, так что я получаю исключение KeyError:REMOTE_ADDR не отправляется в Django с использованием nginx & tornado
article.ip = request.META['REMOTE_ADDR']
Удаленный адрес послана через, как X-Real-IP (HTTP_X_REAL_IP) благодаря nginx.conf:
location/{
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect false;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://frontends;
}
Как HTTP предваряется ключ META Я не могу просто сделать proxy_set_header remote_addr $ remote_addr. Что я могу сделать, это прочитать X-Real-IP, если удаленный ключ addr не найден, но мне любопытно, есть ли более разумное решение.
Спасибо!
Это не правильное решение, но я добавил Джанго промежуточное программное обеспечение, который превратил HTTP_X_REAL_IP в REMOTE_ADDR. – Nixarn
Эти заявления помогут вам: proxy_redirect off; proxy_set_header X-Real-IP $ remote_addr; \t \t proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; \t \t proxy_set_header Схема X-Scheme $; – glarrain