Ситуация такая: есть сервер в стойке на mastak.ru, у него один айпи адрес, на сервере установлена Ubuntu.
Там крутится сайт infostat.info. Мне понадобилось выложить свои файлы, создал VirtualHost tao.infostat.info.
Но когда я его подключил (ссылку в /etc/apache2/conf.d+restart apache2) начались смешные вещи: из под *никсов любых все видится, как было задумано, а из под виндовс у кого-то все ок, а у кого-то вместо infostat.info показывает tao.infostat.info. Что не есть гуд, потому что у всех, кто связан с этим проектом, стоит windows и почти у всех них виден этот субдомен вместо основного сайта.
Один товарищ-сисадмин предположил, что косяк где-то в ДНС, но ДНС-ом управляет сам мастак, поэтому я там ничего исправить не смогу. Почему так было организовано, я не знаю, т.к. договаривался о колокейшн человек, которого уже нет. Да и у меня нет подозрений на ДНС, потому что nslookup показывает наш айпишник 217.199.218.97 и для infostat.info и для tao.infostat.info (как и должно быть).
Мне кажется, что если бы ошибка была в настройках Апача, так он бы всем неправильно и показывал, но такая проблема почему-то возникает именно у пользователей винды!
Не пойму, где искать косяк?...
На всякий случай, настройки Апача:default:
NameVirtualHost infostat.info:80
<VirtualHost infostat.info:80>
ServerAdmin webmaster@infostat.info
ServerName infostat.info:80
RewriteEngine On
RewriteOptions Inherit
RewriteCond %{HTTP_HOST} !^www.infostat.info$
RewriteCond %{HTTP_HOST} ^((.*)\.)infostat.info$
RewriteRule ^/(.*) /%2/$1DocumentRoot /var/www/site
<Directory />
Options FollowSymLinks
AllowOverride None
Order Deny,Allow
Deny from all
</Directory>
<Directory /var/www/site>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
RewriteEngine On
Order allow,deny
Allow from all
</Directory>ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>ErrorLog /var/log/apache2/apache.error.log
LogLevel debug
CustomLog /var/log/apache2/apache.access.log "combined"
ServerSignature OnAlias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
ErrorDocument 404 "Page not found"
</VirtualHost>tao:
<VirtualHost tao.infostat.info:80>
ServerName tao.infostat.info:80
DocumentRoot /var/www/tao
<Directory /var/www/tao>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/tao.infostat.error.log
LogLevel warn
CustomLog /var/log/apache2/tao.infostat.access.log "combined"
ServerSignature On
ErrorDocument 404 "Page not found"
</VirtualHost>
>Там крутится сайт infostat.info. Мне понадобилось выложить свои файлы, создал VirtualHost tao.infostat.info.Описанная проблема не обнаружена. все открывается как и положено. Из под виндовс.
>>Там крутится сайт infostat.info. Мне понадобилось выложить свои файлы, создал VirtualHost tao.infostat.info.
>
>Описанная проблема не обнаружена. все открывается как и положено. Из под виндовс.
>Вот я и говорю - через раз... У кого-то открывается, а у кого-то - нет, независимо от версии установленной винды - хоть ХР хоть w2k3.
Понять бы в чем дело..
>Вот я и говорю - через раз... У кого-то открывается, а у
>кого-то - нет, независимо от версии установленной винды - хоть ХР
>хоть w2k3.
>Понять бы в чем дело..[telepat=1]
www.infostat.info != infostat.info c точки зрения конфигурации апача. Тот кто идет на www.infostat.info попадает на виртуальный хост по-умолчанию, который для апача является последним определенным.
[/telepat]
>>Вот я и говорю - через раз... У кого-то открывается, а у
>>кого-то - нет, независимо от версии установленной винды - хоть ХР
>>хоть w2k3.
>>Понять бы в чем дело..
>
>[telepat=1]
>www.infostat.info != infostat.info c точки зрения конфигурации апача. Тот кто идет на
>www.infostat.info попадает на виртуальный хост по-умолчанию, который для апача является последним
>определенным.
>[/telepat]Как хорошо что телепаты вернулись из отпуска.. автор то про www.infostat.info
ничего не говорил...
Да, действительно, так оно и будет, ведь www.infostat.info не описан в виртуальных хостах...
>[telepat=1]
>www.infostat.info != infostat.info c точки зрения конфигурации апача. Тот кто идет на
>www.infostat.info попадает на виртуальный хост по-умолчанию, который для апача является последним
>определенным.
>[/telepat]Ещё добавлю - на http://www.infostat.info попадёт юзер IE, который набрал в адресной строке `infostat.info'. Тот, кто набрал `http://infostat.info', попадёт куда действительно хотел.
Дружелюбная к пользователю операционная система с улучшенным алгоритмом ресолвинга, ненавязчиво исправляющая ошибки ввода.
>[telepat=1]
>www.infostat.info != infostat.info c точки зрения конфигурации апача. Тот кто идет на
>www.infostat.info попадает на виртуальный хост по-умолчанию, который для апача является последним
>определенным.
>[/telepat]Вы правы, как и ACCA и Square... Мне в голову не пришло набрать www.infostat.info, теперь и я с линукса попал туда же (куда не надо). Почему в голову не пришло? Да просто мне казалось, что директива Rewrite УЖЕ перенаправит пользователей с www. на просто http://, я что-то проглядел?...
>[оверквотинг удален]
>>www.infostat.info != infostat.info c точки зрения конфигурации апача. Тот кто идет на
>>www.infostat.info попадает на виртуальный хост по-умолчанию, который для апача является последним
>>определенным.
>>[/telepat]
>
>Вы правы, как и ACCA и Square... Мне в голову не пришло
>набрать www.infostat.info, теперь и я с линукса попал туда же (куда
>не надо). Почему в голову не пришло? Да просто мне казалось,
>что директива Rewrite УЖЕ перенаправит пользователей с www. на просто http://,
>я что-то проглядел?...Сущую мелочь - область действия.
Чтобы выполнить rewire, нужно каким-то хером попасть в infostat.info в то время, как ты попадаешь в последний определённый VirtualHost. Конечно, можно переставить местами определения VirtualHost - получишь изящные подводные грабли для следующего раза.
Определи ServerAlias и не надейся на неочевидные побочные эффекты.
>[оверквотинг удален]
>>что директива Rewrite УЖЕ перенаправит пользователей с www. на просто http://,
>>я что-то проглядел?...
>
>Сущую мелочь - область действия.
>
>Чтобы выполнить rewire, нужно каким-то хером попасть в infostat.info в то время,
>как ты попадаешь в последний определённый VirtualHost. Конечно, можно переставить местами
>определения VirtualHost - получишь изящные подводные грабли для следующего раза.
>
>Определи ServerAlias и не надейся на неочевидные побочные эффекты.Понял ошибку с Rewrit-ом, спасибо.
Добавил сервералиас, теперь стало вот так:NameVirtualHost www.infostat.info:80
<VirtualHost www.infostat.info:80>
UseCanonicalName On (это я не совсем понимаю, нужно мне или нет? но вроде не мешает..пока)
ServerAdmin webmaster@infostat.info
ServerName infostat.info
ServerAlias www.infostat.info
RewriteEngine On
RewriteOptions Inherit
RewriteCond %{HTTP_HOST} !^www.infostat.info$
RewriteCond %{HTTP_HOST} ^((.*)\.)infostat.info$
RewriteRule ^/(.*) /%2/$1
.......
</VirtualHost>и для второго вирт.хоста:
<VirtualHost tao.infostat.info:80>
UseCanonicalName Off
ServerName tao.infostat.info
ServerAlias tao.infostat.info
RewriteEngine On
RewriteOptions Inherit
RewriteCond %{HTTP_HOST} !^www.tao.infostat.info$
RewriteCond %{HTTP_HOST} ^((.*)\.)tao.infostat.info$
RewriteRule ^/(.*) /%2/$1
......
</VirtualHost>После такой рокировки и по www.infostat.info и без www открывается то , что надо.
Но вот , что меня смущает: парсинг конфига показывает, что default-овым сервером Apache считает по-прежнему tao.infostat.info:
# apache2ctl -S
217.199.218.97:80 is a NameVirtualHost
default server tao.infostat.info (/etc/apache2/conf.d/tao:1) <=== !!! зараза...
port 80 namevhost tao.infostat.info (/etc/apache2/conf.d/tao:1)
port 80 namevhost infostat.info (/etc/apache2/sites-enabled/000-default:2)
Не могу понять, как же мне его отодвинуть вторым, а основным чтобы стал просто infostat.info?
Безумное предположение: а может быть такое, что сначала считываются конфиги из /etc/apache2/conf.d, а уже затем из /etc/apache2/sites-enabled??..
Дело в том, что реальные конфиги лежат в /etc/apache2/sites-available,
ссылка на default сделана в /etc/apache2/sites-enabled,
а ссылка с tao сделана в /etc/apache2/conf.d
Может, я ошибаюсь, но у меня такое создалось ощущение, что апач сначала читает из /etc/apache2/conf.d, а потом уже из /etc/apache2/sites-enabled?..
Кстати, там еще и 3 SSL виртуальных хоста, так вывод парсинга похоже, подтверждает мои предположения...
Боюсь, как вы написали, скрытых граблей, которые вылезут в самый неподходящий момент, как обычно...
>>>Там крутится сайт infostat.info. Мне понадобилось выложить свои файлы, создал VirtualHost tao.infostat.info.
>>
>>Описанная проблема не обнаружена. все открывается как и положено. Из под виндовс.
>>
>
>Вот я и говорю - через раз...Чушь... Впрочем как уже ответили- проблема в вашей невнимательности. Как к настройке апача так и к тому что вы проверяете.
>>>>Там крутится сайт infostat.info. Мне понадобилось выложить свои файлы, создал VirtualHost tao.infostat.info.
>>>
>>>Описанная проблема не обнаружена. все открывается как и положено. Из под виндовс.
>>>
>>
>>Вот я и говорю - через раз...
>
>Чушь... Впрочем как уже ответили- проблема в вашей невнимательности. Как к
>настройке апача так и к тому что вы проверяете.Не будьте так категоричны, скорее, моя проблема - в нехватке знаний, с чем я и обратился к вам...
Хотя, невнимательность наверное, тоже присутствует.
Только так я до конца и не понял, что же конкретно у меня не так - Rewrite неправильный? И как все-таки, сделать, чтобы infostat.info стал первым (default) вируальным хостом?Вообще, настройки апача меня иногда загоняют в тупик - например, вирт.хост пришлось назвать tao.infostat.info только потому, что имя dao.infostat.info он категорически отказывается показывать вообще...с чем это связано я просто загнался выяснять - нет хоста и всё. В логах - пусто. Ни слова. Переименовываешь в tao/zao/wao/что-угодно - появился. Такое ощущение, как будто слово 'dao' "зарезервировано" в системе...понимаю, что выглядит, как чушь, но факт остается фактом...
>Вообще, настройки апача меня иногда загоняют в тупик - например, вирт.хост пришлось
>назвать tao.infostat.info только потому, что имя dao.infostat.info он категорически отказывается показывать
>вообще...с чем это связано я просто загнался выяснять - нет хоста
>и всё. В логах - пусто. Ни слова. Переименовываешь в tao/zao/wao/что-угодно
>- появился. Такое ощущение, как будто слово 'dao' "зарезервировано" в системе...понимаю,
>что выглядит, как чушь, но факт остается фактом...Единственная наводка, которую я не знаю как использовать, вот это:
#apache2ctl -S
[Mon Feb 22 07:24:26 2010] [error] (EAI 2)Name or service not known: Could not resolve host name dao.infostat.info -- ignoring!
Любое другое имя - пожалуйста. Буква "d" не нравится апачу?...