В каком порядке Apache загружает файлы conf и какие?

10

Я смотрю на сервер CentOS 6.5 с установленной веб-структурой, который многие годы добавлялся к нему. В / conf есть 5 активных файлов .conf, включая httpd.conf.

В httpd.conf включается чтение

Include conf.d/*.conf

и он захватывает все файлы в этом каталоге, но без какого-либо определенного порядка, о котором я знаю, и что с каталогом / conf (no .d)?

Есть ли настройка, определяющая порядок загрузки или они просто взяты из az?

Я не администратор сервера, я разработчик, и проблема заключается в путях загрузки файлов в каталог / Temp, где я проверил правильность указанного пути для файлов, которые меня интересуют.

Итак, первый вопрос:

Apache загружает все из / conf или список где-то указан?

Второй вопрос будет:

В каком порядке Apache загружает файлы в алфавитном порядке?

И, наконец:

Включается ли файл, который не заканчивается на .conf ? Например, если я назову что-нибудь myconfig.conf.old, Apache пропустит это?

chrtp
источник

Ответы:

14

Порядок в алфавитном порядке. Он загружает только то, что указывает путь включения. В случае Include conf.d/*.confapache загрузятся все файлы с именами, заканчивающимися на .conf.

Это выдержка из документации Apache :

Подстановочные знаки в стиле оболочки (fnmatch ()) можно использовать для включения нескольких файлов одновременно в алфавитном порядке . Кроме того, если параметр «Включить» указывает на каталог, а не на файл, Apache будет читать все файлы в этом каталоге и любом подкаталоге. Но включать в себя целые каталоги не рекомендуется, потому что легко случайно оставить временные файлы в каталоге, что может привести к сбою httpd.

suspectus
источник
Спасибо, что отвечает на вопросы 1 и 2, конечно. Я посмотрел документы Apache, но не смог найти ответ.
chrtp
В целом (порядок элементов конфигурации переопределяет более ранние элементы), это правильно. Конечно, если команды находятся в одном разделе конфигурации. Но, например, можно (используя AllowOverride) переопределить элементы конфигурации с помощью конфигурации в .htaccessфайле.
Подозреваемый
Извините, я отредактировал свой комментарий до того, как увидел ваш. В этом случае нет .htaccess, но есть файл, начинающийся с 't', который перекрывает все остальное. Я собираюсь переименовать или переместить файл.
chrtp
1
@chrtp, а почему файл, начинающийся с t, переопределяет все остальное?
Андрей Савиных,
1

Apache загружает дополнительную конфигурацию на основе директивы Include. Вероятно, это выглядит так:

Include conf.d/*.conf

Таким образом, очевидно, что он включает в себя все в "conf.d", которое выглядит как "* .conf".

Чтобы сделать его еще более безумным, вы можете добавить произвольное количество каталогов с «include», каждый из которых может содержать примерно одинаковые конфигурационные файлы, которые все с радостью переопределят друг друга при запуске ... А потом сами будут перезаписаны с помощью файла .htaccess в различных размещенных каталогах.

Насколько я могу судить, сначала идет httpd.conf, затем идут каталоги в том порядке, в котором они включены, а затем в алфавитном порядке.

Хорошие времена. Вы можете использовать apachectl -t или apachectl configtest, чтобы получить представление о том, не вызовет ли ваша конфигурация проблемы.

Satanicpuppy
источник
1
Спасибо, похоже, что кто-то оставил там файл с именем template.conf, который, конечно, загружается последним, а затем переопределяет любые другие файлы, которые указывают путь к / Temp. Я могу только догадываться о том, что еще там нарушается!
chrtp
1
@chrtp Чтобы добавить веселья, директивы могут быть указаны во время выполнения с помощью -C (для добавления их перед чтением файлов конфигурации) и -c (для чтения их после файлов конфигурации), так что вы можете получить совершенно другую конфигурацию из командной строки при запуске.
Satanicpuppy
1

Если вы хотите изменить порядок, просто откройте первый файл conf в каталоге sites-available и перед первым VirtualHost *: 80 добавьте свой код виртуального хоста.

В моем случае я хочу, чтобы hub.xxx.com.conf был до bayxxx.com.conf. Поэтому я открываю hub.xxx.com.conf и размещаю виртуальный хост в начале файла

Например:

<VirtualHost *:80>
    DocumentRoot /www/hub.xxx.com/www/root
    ServerName hub.xxx.com
    ServerAlias *.hub.xxx.com
    <Directory "/www/hub.xxx.com/www/root">
        allow from all
        Options +Indexes
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /www/bayxxx.com/www/root
    ServerName bayxxx.com
    ServerAlias www.bayxxx.com
    <Directory "/www/bayxxx.com/www/root">
        allow from all
        Options +Indexes
    </Directory>
</VirtualHost>
Павел
источник