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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Настройка апача  (Прочитано 2287 раз)

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

Оффлайн BAKT

  • Автор темы
  • Участник
  • *
  • Сообщений: 112
    • Просмотр профиля
Настройка апача
« : 21 Октября 2014, 12:23:17 »
Господа, я понимаю, что мой вопрос, мягко говоря, не по теме форума. Но тем не менее я не могу придумать где ещё могу его задать. Так что смиренно надеюсь на ваше понимание и ваши ответы.

Суть вопроса:

Есть VDS на котором имеем прописанные DNS записи вида

*.mysite.ru. A [IP]

Соответственно апач принимает и обрабатывает все запросы на ЛЮБЫЕ несуществующие субдомены и выдаёт по ним дефолтовый сайт. Есть ли какая-либо настройка апача, чтобы он выдавал по запросам исключительно реально существующие домены\субдомены, а на остальное выдавал стандартные ошибки (404 и т.д.)? Т.е. чтобы на запрос реального субдомена pma.mysite.ru - выдавалась нужная админка, а на запрос dflkjgnsldkjfgnlkjn.mysite.ru - ошибка.

PS: О варианте прописывать все субдомены вручную через DNS записи я в курсе. Однако бывает необходимость создать по быстрому новый субдомен, а для этого лезть ещё в одну админку не всегда удобно. Так что хочется узнать реально ли работать через DNS запись типа *.mysite.ru

PPS: Если вы знаете какой либо более подходящий данному вопросу ресурс (форум?) - укажите мне его, пожалуйста.

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Настройка апача
« Ответ #1 : 21 Октября 2014, 13:30:33 »
Apache будет использовать первый блок VirtualHost если не найдет подходящие. Соответственно для wildcard-доменов можно указать только необходимые домены и 404 в первом общем блоке для всех остальных случаев.

NameVirtualHost *:80
Listen 80

<VirtualHost *:80>
Redirect 404 /
ErrorDocument 404 "Page Not Found"
</VirtualHost>

<VirtualHost *:80>
ServerAlias host1.doman.com
DocumentRoot /some_dir/
</VirtualHost>

<VirtualHost *:80>
ServerAlias host1.doman.com
DocumentRoot /some_other_dir/
</VirtualHost>
« Последнее редактирование: 21 Октября 2014, 13:52:46 от .ubuntufan »

Оффлайн BAKT

  • Автор темы
  • Участник
  • *
  • Сообщений: 112
    • Просмотр профиля
Re: Настройка апача
« Ответ #2 : 21 Октября 2014, 13:44:34 »
Спасибо за быстрый ответ.

Только я немного запутался. :(
У меня все хосты и виртуал хосты прописаны отдельными конфигами в /etc/apache2/sites-available/. Там на данный момент уже прописаны пара обычных доменов и пара админок к разным сервисам, прописаннх как субдомены к одному из доменов.

Где мне тогда прописывать то, что вы порекомендовали? В основном конфиге того домена, к которому привязан суб-домен?

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Настройка апача
« Ответ #3 : 21 Октября 2014, 13:57:18 »
Надо чтобы виртуалхост был первым вне зависимости от остальных хостов. Поэтому включать его конфигурацию необходимо до включения других хостов.
В /etc/apache2/apache2.conf:

...

Include conf.d/

Include default_vhost
Include sites-enabled/
...

/etc/apache2/default_vhost:

NameVirtualHost *:80

<VirtualHost *:80>
Redirect 404 /
ErrorDocument 404 "Page Not Found"
</VirtualHost>

Оффлайн BAKT

  • Автор темы
  • Участник
  • *
  • Сообщений: 112
    • Просмотр профиля
Re: Настройка апача
« Ответ #4 : 21 Октября 2014, 14:14:36 »
Спасибо. Вроде всё работает.
Только при рестарте апача выдало предупреждение

* Restarting web server apache2
[Tue Oct 21 14:03:26 2014] [warn] NameVirtualHost *:80 has no VirtualHosts
 ... waiting [Tue Oct 21 14:03:28 2014] [warn] NameVirtualHost *:80 has no VirtualHosts

Нагуглил я по ошибке следующее:

Цитировать
До 2.3.11, NameVirtualHost был обязан поручить серверу, что конкретный IP-адрес и порт сочетание было использовать в качестве имени виртуального хоста. В 2.3.11 и позже, в любое время IP-адрес и порт комбинация используется в нескольких виртуальных хостов, основанный на имени виртуального хостинга автоматически включается для этого адреса.

Эта директива в настоящее время не имеет никакого эффекта.

Т.е. диррективу NameVirtualHost *:80 из конфига можно убрать?

PS: Странно, глянул какая у меня версия сервера:
Цитировать
apache2 -V
Server version: Apache/2.2.22 (Ubuntu)

получается, что ко мне не относится приведённая выше цитата? В чем тогда у меня может быть проблема? Может ли быть проблема в том, что аналогичная запись есть уже в ports.conf?
« Последнее редактирование: 21 Октября 2014, 14:16:43 от BAKT »

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Настройка апача
« Ответ #5 : 21 Октября 2014, 14:23:09 »
NameVirtualHost *:80

Можешь убрать, она в ports.conf видимо ранее уже прописана.

Оффлайн BAKT

  • Автор темы
  • Участник
  • *
  • Сообщений: 112
    • Просмотр профиля
Re: Настройка апача
« Ответ #6 : 21 Октября 2014, 14:38:39 »
Собственно о чём я и спрашивал. :)

Спасибо за помощь.

Оффлайн BAKT

  • Автор темы
  • Участник
  • *
  • Сообщений: 112
    • Просмотр профиля
Re: Настройка апача
« Ответ #7 : 11 Января 2015, 00:01:47 »
Немножко некропостинга. :(

Сменил хостера, сменился и апач. Теперь он

apache2 -v
Server version: Apache/2.4.7 (Ubuntu)
Server built:   Jul 22 2014 14:36:38

И либо старый способ уже не работает, либо я что-то делаю не так.

Если вкратце - добавил default_vhost как подключаемый конфиг в папку /conf-available. Включил его. Соответственно он прекрасно блокирует несуществующие субдомены. НО! Он так же начал блокировать и дефолтовый домен! Т.е. Сам домен блокирует, а субдомен к нему - нормально пашет.

Дефолтовый домен у меня прописан вот так:

<VirtualHost *:80>
        ServerAdmin **********@gmail.com
        ServerName ***********.ru

        DocumentRoot /var/www/cms/www/
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/cms/www/>
                Options FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride All
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/www/cms/logs/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/www/cms/logs/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

    Redirect 404 /favicon.ico
    <Location /favicon.ico>
       ErrorDocument 404 "No favicon"
    </Location>

<IfModule dir_module>
    DirectoryIndex  index.php index.html
</IfModule>

</VirtualHost>

Что я делаю не так?

Оффлайн BAKT

  • Автор темы
  • Участник
  • *
  • Сообщений: 112
    • Просмотр профиля
Re: Настройка апача
« Ответ #8 : 26 Января 2015, 13:03:24 »
К сожалению до сих пор так и не нашёл ответ на свой вопрос. Буду рад любой подсказке.

Оффлайн ru_kane

  • Активист
  • *
  • Сообщений: 958
  • Kubuntu Desktop 20.04 & Ubuntu Server 20.04
    • Просмотр профиля
    • www.kane.ru
Re: Настройка апача
« Ответ #9 : 26 Января 2015, 14:03:19 »
К сожалению до сих пор так и не нашёл ответ на свой вопрос. Буду рад любой подсказке.
А результат то какой хотелось бы увидеть ? Что вы называете дефолтовым доменом ?
Вирт.хост ищется по алфавиту, т.е. обзовите свой default_vhost - 000_default_vhost
и проверьте, случаем при апгрейде апача не появился ли там еще один конфиг "по умолчанию" (начинается с 000_).
Kubuntu Desktop 20.04 [Intel Core i5-8600K, Asus ROG STRIX Z370-F Gaming, ASUS STRIX-GTX1050TI-4G-GAMING]

Оффлайн BAKT

  • Автор темы
  • Участник
  • *
  • Сообщений: 112
    • Просмотр профиля
Re: Настройка апача
« Ответ #10 : 26 Января 2015, 17:16:05 »
Спасибо за ответ.
А результат то какой хотелось бы увидеть ?

Как я уже писал в первых постах - хотелось бы, чтобы сервер нормально отдавал существующие домены и их поддомены и никак НЕ отдавал несуществующие под-домены.

Ибо, на данный момент, при DNS записи у хостера в виде *.mysite.ru. A [IP] при попытке открыть любой несуществующий под-домен, сервер не выдаёт ошибку, а перенаправляет на первый доступный домен, чего мне крайне не хотелось бы. В апаче 2.2.2 всё решилось прекрасным советом .ubuntufan. Но с апачем 2.4.7 этот вариант уже не прокатил. Собственно об этом я и спрашивал пару постов назад.

Порывшись сегодня по инету, конфигам и манам пока нашёл единственный рабочий вариант: либо всё тот же рекомендованный .ubuntufan default_vhost.conf привести к виду

<VirtualHost *:80>
ServerName bla-bla-bla
Redirect 404 /
</VirtualHost>

либо добавить эту же строчку "ServerName bla-bla-bla" в /sites-available/000-default.conf. К сожалению моих знаний не хватает, чтобы оценить на сколько правильно я воткнул этот "костыль", однако, как мне кажется, на данный момент всё работает именно так, как мне нужно.

Тем не менее у меня возник ещё один вопрос: я обратил внимание, что в error.logs не пишется ни одной ошибки! Т.е. что в дефолтовом, что в логах от других виртуалхостов там ничего нет!

В дефолтовом error.log есть только:

[Mon Jan 26 16:29:57.875991 2015] [mpm_event:notice] [pid 2388:tid 140304366208896] AH00489: Apache/2.4.7 (Ubuntu) configured -- resuming normal operations
[Mon Jan 26 16:29:57.876254 2015] [core:notice] [pid 2388:tid 140304366208896] AH00094: Command line: '/usr/sbin/apache2'
[Mon Jan 26 16:31:10.381251 2015] [mpm_event:notice] [pid 2388:tid 140304366208896] AH00491: caught SIGTERM, shutting down
[Mon Jan 26 16:31:11.442591 2015] [mpm_event:notice] [pid 2510:tid 140714554083200] AH00489: Apache/2.4.7 (Ubuntu) configured -- resuming normal operations
[Mon Jan 26 16:31:11.442754 2015] [core:notice] [pid 2510:tid 140714554083200] AH00094: Command line: '/usr/sbin/apache2'
[Mon Jan 26 16:32:21.374693 2015] [mpm_event:notice] [pid 2510:tid 140714554083200] AH00491: caught SIGTERM, shutting down
[Mon Jan 26 16:32:22.455120 2015] [mpm_event:notice] [pid 2623:tid 140432517535616] AH00489: Apache/2.4.7 (Ubuntu) configured -- resuming normal operations
[Mon Jan 26 16:32:22.455345 2015] [core:notice] [pid 2623:tid 140432517535616] AH00094: Command line: '/usr/sbin/apache2'

а в логах от других хостов вообще пусто!

при этом во всех конфигах есть явные указания на файлы логов

000-default.conf

        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel error


nod.conf
        ErrorLog /var/www/nod/logs/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel error

и т.д. Куда ошибки то подевались?

Оффлайн ru_kane

  • Активист
  • *
  • Сообщений: 958
  • Kubuntu Desktop 20.04 & Ubuntu Server 20.04
    • Просмотр профиля
    • www.kane.ru
Re: Настройка апача
« Ответ #11 : 26 Января 2015, 18:12:57 »
Если вы хотите, чтобы сервер никак не отдавал несуществующие домены/поддомены, сделайте конфиг 000-default.conf направляющий на пустой html

Пользователь решил продолжить мысль [time]26 Январь 2015, 19:15:19[/time]:
сервер не выдаёт ошибку, а перенаправляет на первый доступный домен, чего мне крайне не хотелось быОн выдает первый конфиг по алфавиту (до алфавита идут цифры).

Делаете конфиг направляющий на html-"заглушку", начинающийся с нулей или ААА, короче чтобы он первым был, по дефолту - 000-default.conf
« Последнее редактирование: 26 Января 2015, 18:16:59 от ru_kane »
Kubuntu Desktop 20.04 [Intel Core i5-8600K, Asus ROG STRIX Z370-F Gaming, ASUS STRIX-GTX1050TI-4G-GAMING]

Оффлайн BAKT

  • Автор темы
  • Участник
  • *
  • Сообщений: 112
    • Просмотр профиля
Re: Настройка апача
« Ответ #12 : 26 Января 2015, 18:16:45 »
Собственно это и было сделано. Только не пустой html, а сразу редирект на 404. Только работало это для Апача версии 2.2.2. А вот для 2.4.7 - не захотело. Об этом я и спрашивал, повторно подняв этот вопрос, спустя пару месяцев, после решения первоначальной задачи.

А по поводу error.log можете что-нибудь подсказать?

Оффлайн ru_kane

  • Активист
  • *
  • Сообщений: 958
  • Kubuntu Desktop 20.04 & Ubuntu Server 20.04
    • Просмотр профиля
    • www.kane.ru
Re: Настройка апача
« Ответ #13 : 26 Января 2015, 18:21:37 »
ErrorLog /var/www/nod/logs/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel error
может быть поможет, если LogLevel впереди поставить ErrorLog


лично я делаю логи для каждого сайта (домена) отдельные:

LogLevel warn
ErrorLog  /var/www/DOMAIN/log/error.log
CustomLog /var/www/DOMAIN/log/access.log combined
« Последнее редактирование: 26 Января 2015, 18:39:33 от ru_kane »
Kubuntu Desktop 20.04 [Intel Core i5-8600K, Asus ROG STRIX Z370-F Gaming, ASUS STRIX-GTX1050TI-4G-GAMING]

Оффлайн BAKT

  • Автор темы
  • Участник
  • *
  • Сообщений: 112
    • Просмотр профиля
Re: Настройка апача
« Ответ #14 : 26 Января 2015, 21:19:38 »
ErrorLog /var/www/nod/logs/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel error
может быть поможет, если LogLevel впереди поставить ErrorLog
Сомневаюсь, что дело в этом. Да и в дефолтовом 000-default.conf стоит именно так.

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn


        ErrorLog ${APACHE_LOG_DIR}/error.log
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

 

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