2013-02-11 2 views
2

Я принимал Джанго администратора проекта на локальной машине X. http://10.4.x.y/myapp/admin works. У меня есть внешний IP на другой машине Y и я делаю прокси пропуск из Y в X.Хостинг Джанго проект за ProxyPass

http://proxypassname.com/myapp/admin works. Но, когда я нажимаю ссылку «Сохранить» или «Сохранить продолжение редактирования» после редактирования на странице администратора, она перенаправляет на локальный компьютер ip (то есть http://10.4.x.y/myapp/blah_blah_blah).

Как убедиться, что проект django перенаправляет на имя proxypass вместо локального IP?

ответ

0

Я сделал эти две вещи, и это сработало.

  1. Всякий раз, когда вы добавляете ProxyPass, вы должны добавить ProxyPassReverse

  2. SITE_ID должен быть установлен в той области, где вы хотите, чтобы указать этот Джанго проект.

2

Это происходит потому, что администратор перенаправляет на IP-адрес, который, по его мнению, имеет. Он попадает в заголовок HTTP-запроса.

Однако исправление очень просто. Предполагая, что прокси-сервер реализует стандарт X-Forwarded-For, его можно легко устранить.

в вашем settings.py, просто установить:

USE_X_FORWARDED_HOST = True

и перезагрузить Django.

Если это не сработает, вы можете попытаться выяснить, устанавливает ли ваш прокси другой заголовок и записывает промежуточное программное обеспечение, которое делает то же самое. Это первый пример на Django's documentation chapter on middleware