Итак, я получил простую настройку с nginx для статического носителя и балансировки нагрузки и торнадо в качестве веб-сервера для django (работает 4 сервера). Моя проблема заключается в том, что remote_addr не передается в django, поэтому я получаю KeyError:
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, если не найден ключ удаленного адреса, но мне любопытно, есть ли более разумное решение.
Спасибо!