Единая платформа для разных доменов

в 18:55, , рубрики: cms, nginx, wordpress, Блог компании Этажи, маркетинг, разработка

Привет читатели!

Начинаем цикл статей, мы долго готовились к этому. И вот пришло время для публикации. Нам важно ваше мнение. Ваша критика будет к стати. Мы готовы ответить на все вопросы по теме))).

Надеюсь вам будет полезно!

Начнем, пожалуй, с самого простейшего нашего решения для автоматизации маркетинговых процессов без привлечения web программистов!

В любой крупной компании есть отдел маркетинга, которому постоянно нужно что-то менять на сайте, проводить исследования, воплощать, как говорится, "идеи в жизнь". Некоторое время назад у нас была самописная CMS с сильно ограниченным функционалом. Много времени мы тратили на маркетинговые задачи. Да и идей очень много, которые вставали в очередь канбана и выполнялись спустя некоторое время. Бывало, что разработка прерывалась и маркетинговое исследование откладывалось, что сильно влияло на компанию в целом.

Как же мы учили маркетологов программировать...

Итак, мы сделали так, что бы разработчик занимался программированием проектов. Весь функционал по сайту мы передали маркетологам. Мы их научили программировать мы сделали админкой по настройке контента wordpress.

image

Один из компонентов, без которого мы бы не обошлись — стал PageBuilder. Worpress, конечно, не идеальная система, но упростить задачи на другой CMS нам не удалось. На них нет такого крутого инструмента.

Немного забегу вперед, что бы вы не потеряли интерес к этой статье — нам нужно было решать немного нетривиальные задачи.

Напомню, тема статьи — единая админка для разных доменов.

Используемые материалы:

Nginx прокси сервер
Nginx + PHP-FPM сервер
Wordpress + Плагины (multisite, pagebuilder)

image

Изначально мы имеем настроенную на один домен CMS, ну, допустим, корнем у нас будет example.com

И, так как по роду деятельности бизнеса, подразделения по городам у нас должны быть разделены поддоменами, например: msk.example.com или spb.example.com

С этим CMS справляется на ура. Нет никаких глюков, багов и т.п. Мы, вроде бы даже, успокоились! Но, на самом деле, это были "цветочки". Встал вопрос о поднятии других сайтов с тематикой, расхожей с основной домену example.com.

Отдел маркетинга поставил задачу: сделать лендинги для сайтов партнеров. И домен корневой отличался. Главным условием было — не использовать редиректы с example2.com на example2.example.com. Это немного нас огорчило. Мы удалились на обсуждения концепции — делать отдельные инсталяции wordpress с плагинами или использовать нашу, уже собранную систему, с настроенными идеально самописными плагинами.

На помощь пришел мой любимый NGINX. Давно перешел на него, ни разу не подводил, и я знал что решение можно сделать именно на нем.

Мы создали поддомен от нашего корня с понятным названием (для нас) что это домен другой компании: сайтпостроительству.example.com. Большая часть ресурсов по созданию вернулась к маркетологам, а от нас только требовалось сделать проброс соединений.

Небольшой код из NGINX который справился с данной задачей:

В секцию http мы добавили следующий код

map "$http_host" $newurl {
 "домен.рф"     "domainrf.example.com";
 "домен2.рф"        "domain2rf.example.com";
 default                    $http_host;
}

Соответственно, нужно перевести в punycode. Например, домен.рф будет xn--d1acufc.xn--p1ai

Тут вроде ничего сложного. Переменная $newurl будет иметь нужный нам домен для проброса.

А в секцию с server -> location вместо установки стандартных заголовков

location / {
 *
 *
 proxy_set_header   HOST $newurl;
 proxy_set_header   HTTP_HOST  $newurl;
 proxy_set_header   SERVER_NAME  $newurl;
 *
 *
}

Этого стало достаточно, что бы домен заработал без редиректа. Единственный редирект происходит, когда мы пытаемся перейти в админку.

Подитожим: Наша команда сэкономила прилично времени на разработку новых фич и саморазвитие. А рутинную работу отдела маркетинга мы предоставили самому отделу.

image

Таким образом, после создания вышеописанного продукта наша компания существенно сократила затрачиваемые ресурсы на напизание ТЗ от маркетинга, на разработку решения, на правки и корректировки, без которых не проходит ни одно внедрение! Маркетинг имеет возможность самостоятельно и значительно быстрее воплощать в жизнь свои идеи, а разработчики в это время трудятся над другими важными проектами компании.

На этом все! До новых встреч!

Автор: Этажи

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js