Ух, какое название придумал!
Доброго здоровья, уважаемое сообщество!
Возникла тут интересная задача реализации многосайтововости на доменах.
Есть сайт на домене .ru, контент сайта фильтруется по регионам, т.е. имеются сайты вида: moscow.sitename.ru, piter.sitename.ru, kiev.sitename.ru, kharkov.sitename.ru .... и так все регионы (как вы понимаете, список регионов постоянно расширяется...). Возникла необходимость в вынесении украинских регионов на украинский домен sitename.com.ua.
ru-сайт был поднят на BitrixVM, как сайт по умолчанию (до меня), ДНС-ы самого домена и всех его алиасов были настроены на IP сервера. Все алиасы обрабатываются на стороне сайта так что для сервера никаких проблем с обработкой поддоменов и разбросом их по различным папкам тут нет. Точнее не было, пока не было необходимости выделения украинской части сайта в отдельный сайт.
Как-то скомкано получается изложить всю проблему, но, надеюсь, кому нужно - поймут.
И вот начал я насипрйку многосайтовости. В админке битрикса вторую лицензию занял новым укр. сайтом. В админке виртуальной машины завел дополнительный сайт для .com.ua. Настроил днс-ы украинского домена и его алиасов аналогично значениям ру-домена.
Открываю сайт sitename.com.ua - попадаю в верную папку. Радуюсь. А вот дальше начинается счастье... Т.к. в настройках серверов я чуть сильнее чайника, то посмотрев на файлы конфигурации nginx, впал в ступор - понимаю, где править нужно, но не понимаю, что. Пришлось обращаться к знакомому сервернику. За что ему как всегда, огромное спасибо! Кому нужен специалист такого профиля - пишите вличку, познакомлю:)
Итак, решение задачи заключалось в правке всего 4-х файлов:
- /etc/nginx/bx/site_avaliable/s1.conf
- /etc/nginx/bx/site_avaliable/bx_ext_sitename.com.ua.conf
- /etc/httpd/bx/conf/bx_ext_sitename.com.ua.conf
- /etc/httpd/bx/conf/default.conf
По очереди.
/etc/nginx/bx/site_avaliable/s1.conf |
В данном файле было так:
server {
...
server_name _;
...
set $proxyserver "http://127.0.0.1:8888";
set $docroot "/home/bitrix/www";
index index.php;
root /home/bitrix/www;
} |
подменяем параметр "server_name", прописывая сюда ру-домен с алиасами:
server {
...
server_name *.sitename.ru sitename.ru;
...
set $proxyserver "http://127.0.0.1:8888";
set $docroot "/home/bitrix/www";
index index.php;
root /home/bitrix/www;
} |
/etc/nginx/bx/site_avaliable/bx_ext_sitename.com.ua.conf |
было так:
server {
listen 80 ;
server_name sitename.com.ua www.sitename.com.ua;
access_log /var/log/nginx/sitename_access.log main;
error_log /var/log/nginx/sitename_error.log warn;
...
set $proxyserver "http://127.0.0.1:8887";
set $imcontenttype "text/html; charset=utf-8";
set $docroot "/home/bitrix/ext_www/sitename.com.ua";
index index.php;
root "/home/bitrix/ext_www/sitename.com.ua";
# Redirect to ssl if need
if (-f /home/bitrix/ext_www/sitename.com.ua/.htsecure) { rewrite ^(.*)$ https://$host$1 permanent; }
...
} |
стало так:
server{
listen 80 ;
server_name *.sitename.com.ua sitename.com.ua;
access_log /var/log/nginx/sitename_access.log main;
error_log /var/log/nginx/sitename_error.log warn;
...
set $proxyserver "http://127.0.0.1:8887";
set $imcontenttype "text/html; charset=utf-8";
set $docroot "/home/bitrix/ext_www/sitename.com.ua";
index index.php;
root "/home/bitrix/ext_www/sitename.com.ua";
# Redirect to ssl if need
if (-f /home/bitrix/ext_www/sitename.com.ua/.htsecure) { rewrite ^(.*)$ https://$host$1 permanent; }
...
} |
т.е. тоже меняем параметр server_name
На этом с nginx готово. Правим настройки апача
/etc/httpd/bx/conf/default.conf |
в данном файле в самом начале прописываем:
Listen 127.0.0.1:8888
<VirtualHost 127.0.0.1:8888>
ServerName sitename.ru
ServerAlias *.sitename.ru
|
Т.е. добавляем ServerName и ServerAlias для ру-сайта. В остальном - файл остается без изменений
Дальше - по файлу
/etc/httpd/bx/conf/bx_ext_sitename.com.ua.conf |
В нем вносим всего одну правку - вместо
ServerAlias www.sitename.com.ua |
вписываем
ServerAlias *.sitename.com.ua |
Все! Перезагружаем апач и nginx
Простите за разжевывание, возможно простых истин, но пост скорее для себя, вдруг пригодится еще.