Доступ к заголовку HTTP_X_FORWARDED_FOR в Apache для Django - PullRequest
1 голос
/ 28 апреля 2011

Я хочу прочитать IP-адрес клиента в Django. Когда я пытаюсь сделать это сейчас с заголовком HTTP_X_FORWARDED_FOR, происходит сбой. Ключа нету.

Очевидно, это связано с настройкой моего сервера Apache (я развертываю с apache и mod_wsgi) Я должен настроить его как обратный прокси? Как мне это сделать, есть ли последствия для безопасности?

Спасибо, Брендан

Ответы [ 2 ]

1 голос
/ 29 апреля 2011

Обычно эти заголовки доступны в request.META.Так что вы можете попробовать request.META['HTTP_X_FORWARDED_FOR'].

Используете ли вы Apache в качестве обратного прокси-сервера?Это не кажется мне правильным.Обычно в качестве обратного прокси-сервера Apache, на котором работает сервер приложений, используется более легкий статический сервер, такой как nginx.Nginx может отправлять любые заголовки, которые вам нравятся, используя конфигурационную запись proxy_set_header.

0 голосов
/ 29 апреля 2011

Я не знаком с mod_wsgi, но обычно IP-адрес клиента доступен в переменной среды REMOTE_ADDR.Если клиент обращается к веб-сайту через прокси-сервер или если ваша настройка включает обратный прокси-сервер, вместо этого адрес прокси-сервера будет указан в переменной REMOTE_ADDR, и прокси-сервер может скопировать исходный IP-адрес клиента в HTTP_X_FORWARDED_FOR (в зависимости от конфигурации).1001 *

Если у вас есть объект запроса, вы можете получить доступ к следующим переменным среды:

request.environ.get('REMOTE_ADDR')
request.environ.get('HTTP_X_FORWARDED_FOR')

Не нужно менять конфигурацию Apache или настраивать обратный прокси-сервер только для получения клиентскогоIP-адрес.

...