Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Вопрос по настройке Apache2 и виртуальному хостингу с доменами 3-го уровня.  (Прочитано 878 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AlexDem

  • Автор темы
  • Активист
  • *
  • Сообщений: 696
    • Просмотр профиля
Всем привет. Просьба высказать умные мысли, т.к. я с этой задачей справится не могу, я либо тупой, либо просто знаний нехватает.

Ситуация:
- есть VPS c Apache2 на нем поднято 2 сайта, простенькая заготовка титульной страницы и сайт социальной сети.
на страницу заходим по team4work.net либо www.team4work.net, в соцсеть my.team4work.net (с прибавлением домена 3-го уровня my.* в начале).
Для обеих частей сделано 2 конфига:

для team4work.net и www.team4work.net - 'team4work.net.conf', файлы страницы в /var/www/html

(Нажмите, чтобы показать/скрыть)

для my.team4work.net 'ossn.conf', файлы страницы в /var/www/html/ossn/
(Нажмите, чтобы показать/скрыть)

У регистратора (Google domains) прописаны CNAME

(Нажмите, чтобы показать/скрыть)

Все открывается замечательно для всех адресов, то есть если набираем team4work.net или www.team4work.net попадаем на страничку, если  my.team4work.net - открывается соцсеть.

Проблема: При открытии соцсети мы видим в строке браузера адрес не с доменом 3-го уровня, а просто team4work.net. Т.е. идет редирект. А надо чтобы было my.team4work.net

Вопрос: Можно ли это как то пофксить? Как - я не знаю. Я ковырялся с настройками Servername и Serveralias, но нужные странички открываются только по той конфигурации, что приведена. Думал отключить CNAME у регистратора, но тогда браузер перестает воспринимать ссылку my.team4work.net Мануал по апачу писали программисты, а не пользователи, там хрен что поймешь. В итоге то все работает как задумывалось, но есть такая небольшая шерховтость.

Оффлайн bezbo

  • Старожил
  • *
  • Сообщений: 1762
    • Просмотр профиля
есть два нюанса:
1. /var/www/html и /var/www/html/ossn/, соответственно team4work.net/ossn/ - тоже будет ваша соц.сеть
2. my CNAME team4work.net, удалите эту запись и добавьте запись типа А my.team4work.net 51.158.107.190

Оффлайн AlexDem

  • Автор темы
  • Активист
  • *
  • Сообщений: 696
    • Просмотр профиля
есть два нюанса:
1. /var/www/html и /var/www/html/ossn/, соответственно team4work.net/ossn/ - тоже будет ваша соц.сеть
2. my CNAME team4work.net, удалите эту запись и добавьте запись типа А my.team4work.net 51.158.107.190

1. И чем это нам грозит? Да и бог с ним, доменных адресов то это не касается, это касается только того, что после .net
2. Что-то не помогло, но за идею спасибо, отрицательный результат это тоже результат.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28376
    • Просмотр профиля
Вы, конечно, понимаете, что у одного сайта не может быть два имени?
ServerAlias - это то же ServerName, просто другое.

(Нажмите, чтобы показать/скрыть)
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн AlexDem

  • Автор темы
  • Активист
  • *
  • Сообщений: 696
    • Просмотр профиля
Вы, конечно, понимаете, что у одного сайта не может быть два имени?
ServerAlias - это то же ServerName, просто другое.

Это понятно. Как я это понимаю: сайты то физически в разных папках, т.е. получается 2 разных сайта, один с www. или без всего, другой с my. - это разные имена для разных папок на сервере, и ServerName - это именно то, что должно быть в строке браузера для того, чтобы апач понял куда направить запрос получив имя сервера, т.е. какую папку читать при загрузке страницы. И судя по моей рабочей настройке так и происходит.

ServerAlias - судя по переводу это псевдоним сервера, т.е. какие другие имена могут быть у сервера, если прочитав эти имена апач направит запрос по адресу указанному в ServerName. Т.е. я могу в ServerAlias написать еще  и site.team4work.net и еще кучу всего и если пропишу этот адрес и все прочие у регистратора, по этому адресу откроется team4work.net

Вроде все логично, но отсюда и проблема, я не понимаю, почему если убрать 'ServerAlias team4work.net' из конфига OSSN для сайта my.team4work.net перестает открываться соцсеть и идет тупо перенаправление на team4work.net и открывается просто страничка. Но если оставить, то по этому же адресу team4work.net (а не по адресу my.team4work.net) открывается соцсеть.

Оффлайн bezbo

  • Старожил
  • *
  • Сообщений: 1762
    • Просмотр профиля

Оффлайн AlexDem

  • Автор темы
  • Активист
  • *
  • Сообщений: 696
    • Просмотр профиля
я не понимаю

sudo apachectl -S?

(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 26 Марта 2020, 13:35:11 от AlexDem »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28376
    • Просмотр профиля
Цитировать
         default server my.team4work.net (/etc/apache2/sites-enabled/ossn.conf:1)
         port 80 namevhost my.team4work.net (/etc/apache2/sites-enabled/ossn.conf:1)
                 alias team4work.net
         port 80 namevhost team4work.net (/etc/apache2/sites-enabled/team4work.net.conf:1)
                 alias www.team4work.net
И что вам непонятно?


Сравните с тем конфигом, который предложил я.


Цитировать
         default server team4work.net (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost team4work.net (/etc/apache2/sites-enabled/000-default.conf:1)
         port 80 namevhost my.team4work.net (/etc/apache2/sites-enabled/ossn.conf:1)
         port 80 namevhost www.team4work.net (/etc/apache2/sites-enabled/team4work.net.conf:1)
« Последнее редактирование: 26 Марта 2020, 14:55:08 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Schneider

  • Участник
  • *
  • Сообщений: 173
    • Просмотр профиля
я не понимаю, почему если убрать 'ServerAlias team4work.net' из конфига OSSN для сайта my.team4work.net перестает открываться соцсеть и идет тупо перенаправление на team4work.net и открывается просто страничка. Но если оставить, то по этому же адресу team4work.net (а не по адресу my.team4work.net) открывается соцсеть.
Да, на первый взгляд это кажется странным.
При исходных ваших конфигах происходит следующее:

Когда вы набираете my.team4work.net по прописанному вами в DNS записях правилу CNAME
my.team4work.net подменяется на team4work.net а для него в DNS записях прописан некий IP адрес.

По этому IP-адресу браузер подключается к вашему VPS и говорит ему: "Дай мне веб-страницу с адресом team4work.net"
Apache сперва смотрит VirtualHost прописанный в файле ossn.conf ,так как файл начинается с английской 'O' что по алфавиту впереди/раньше 'T' (team4work.net.conf)
Апачи тут же видит ServerAlias team4work.net и выдает веб-страницу из папки DocumentRoot /var/www/html/ossn
  На этом все.

Когда вы удаляете ServerAlias team4work.net из конфига ossn.conf, то апач не находит совпадения ни с ServerName ни с ServerAlias для VirtualHost в файле ossn.conf, и переходит к следующему файлу (по алфавиту) team4work.net.conf. Найдя совпадения по ServerName апачи выдает сайт из DocumentRoot /var/www/html при этом в браузере в адресной строке так же, как и в первом случае будет team4work.net

Я понятно объяснил?  :coolsmiley:

Разжую еще дальше. Если вы зарегистрируете себе сайт Vasia.ru и в DNS записи присвоите ему адрес вашего сервера.
И попробуете зайти по vasia.ru, То апачи пройдется по вашим конфигам, и, не найдя нигде совпадений, выдаст первый по списку ваших файлов конфигурации(виртуальных хостов) вебсайт из папки /var/www/html/ossn потому, что он первый! Итак под именем vasia.ru будет красоваться ваша соцсеть  ;D
  Можно все виртуальные хосты прописать в один файл, логика будет та же, та конфигурация что идет первой будет дефолтной. Выдается первый совпадающий по имени или алиасу виртуалхост, если нет совпадений то первый-дефолтный.
 
sudo apachectl -S  выводит как раз тот порядок, по которому сервер будет руководствоваться(после перезагрузки) при выдаче виртуалхоста. Если вы что-то поменяли в конфигах, по этой команде будет выдан этот порядок, даже если вы еще
не перезагрузили конфиги сервера через
systemctl restart[reload] apache2.service  - после рестарта этот порядок заработает.
« Последнее редактирование: 26 Марта 2020, 22:36:19 от Schneider »

Оффлайн AlexDem

  • Автор темы
  • Активист
  • *
  • Сообщений: 696
    • Просмотр профиля
Да, на первый взгляд это кажется странным.
При исходных ваших конфигах происходит следующее:

Привет, спасибо, стало понятнее как это работает, обязательно попробую поменять конфиг с учетом описанного...

 

Страница сгенерирована за 0.077 секунд. Запросов: 26.