Как я могу одновременно обрабатывать разные хосты, когда Django запускает Gunicorn за Apache?

StackOverflow https://stackoverflow.com//questions/22081518

Вопрос

У меня есть установка Django, в которой я хотел бы запустить несколько вариантов одного и того же сайта:те же данные, другой статический контент, с конечной целью продемонстрировать XYZ, реализованный в различных фреймворках JavaScript.Я бы хотел, чтобы загружались разные домашние страницы, и они выводили свой собственный статический контент.(Все предполагаемые проекты являются СПА-центрами.)

Я попробовал это решение на Как я могу получить доменное имя моего сайта в шаблоне Django?, но в моей системе действующий сайт не указывает имя хоста 'pragmatometer.com';он дает имя хоста 'localhost: 8000', потому что Django / Gunicorn обслуживает страницы как localhost.Я попытался указать в /etc/hosts, что pragmatometer.com равно 127.0.0.1, и использовать прокси Apache для pragmatometer.com, но это привело к ошибке.Это оставляет открытой перспективу запуска отдельных хостов на разных портах, которые должны проксироваться как отдельные, или перенаправления домашней страницы на целевую страницу, специфичную для URL-адреса, решение, которое пожертвовало бы чистым URL-адресом xyz.pragmatometer.com чтобы продемонстрировать реализацию фреймворка XYZ.Я вижу несколько способов заклеить это с помощью JavaScript, только один или два из которых я бы хотел, чтобы будущий босс увидел...

В идеале я хотел бы, чтобы корневой URL-адрес нескольких (суб) доменов содержал домашнюю страницу, специфичную для субдомена, и /load/*, /save/* и т.д.согласованный между ними.Я также хотел бы, чтобы корневой URL-адрес использовал свои собственные CSS и JavaScript, но это достаточно просто, если я могу заставить корневой URL работать соответствующим образом.

Лучшее решение, которое я вижу на данный момент, - это наличие отдельных серверных процессов, прослушивающих один и тот же IP-адрес, но имеющих изоморфные серверы, работающие на разных портах и проксируемые разными виртуальными хостингами Apache.Либо это, либо заставить JavaScript определить URL-адрес и перезаписать страницу "реальным" индексом для домена, который немного попахивает.

Комментарии о лучшем решении или о том, как хорошо выполнить вышеуказанное намерение?

--РЕДАКТИРОВАТЬ--

Или другой подход, который мог бы быть немного чище:

Создайте домашний образ, который загружает содержимое /framework/ для каждого фреймворка, а затем document.write() использует его после страница загружена достаточно для document.write(), чтобы заблокировать существующее содержимое страницы.

Если бы я использовал jQuery для сжатия и загрузки страницы таким образом, оставило бы ли это какие-либо загрязнения, которые помешали бы надлежащей работе фреймворков?

Это было полезно?

Решение

Ваш стек выглядит немного сумасшедшим.

Ты хочешь один веб-сервер с Django, к которому можно получить доступ множественный домены.Каждый домен заставляет приложение Django обслуживать разный контент.Правильно ли я вас понял?

Если да, возможно, вы добились успеха, заменив Apache на Nginx.Он может разрешить запрашивающее имя хоста и решить, как перенаправить запрос:

В чем разница между $host и $ http_host в Nginx

Многодоменный Хостинг С Одним проектом Django

Обновить

Соответствующая документация nginx для различения различных имен хостов:http://nginx.org/en/docs/http/request_processing.html http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name

Соответствующая документация nginx для добавления заголовков запросов:http://nginx.org/en/docs/http/ngx_http_headers_module.html#add_header

Также смотрите этот ответ:Добавление и использование заголовка (HTTP) в nginx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top