Dalam urutan apa Apache memuat file conf dan yang mana?

10

Saya melihat server CentOS 6.5 dengan webframework yang diinstal yang telah ditambahkan selama bertahun-tahun. Ada apa yang terlihat seperti 5 file .conf aktif di / conf, termasuk httpd.conf.

Di httpd.conf sertakan membaca

Include conf.d/*.conf

dan itu mengambil semua file dalam direktori itu, tetapi tanpa urutan tertentu yang diterapkan yang saya ketahui, dan bagaimana dengan direktori / conf (no .d)?

Apakah ada pengaturan yang menyatakan urutan muat atau mereka baru saja diambil dari az?

Saya bukan admin server, saya seorang pengembang dan masalahnya terletak pada jalur untuk mengunggah file ke direktori / Temp, di mana saya telah memeriksa bahwa jalur yang ditentukan benar untuk file yang saya sendiri khawatirkan.

Jadi, pertanyaan pertama adalah:

Apakah Apache memuat semuanya dari / conf atau apakah ada daftar yang ditentukan di suatu tempat?

Pertanyaan ke-2 adalah:

Dalam urutan apa Apache memuat file, berdasarkan abjad?

Akhirnya:

Apakah file yang tidak diakhiri dengan .conf disertakan? Sebagai contoh jika saya memberi nama myconfig.conf.old, apakah Apache akan melewatinya?

chrtp
sumber

Jawaban:

14

Urutannya adalah abjad. Hanya memuat apa yang ditentukan jalur Sertakan. Dalam kasus Include conf.d/*.confapache akan memuat semua file dengan nama yang diakhiri .conf.

Ini adalah kutipan dari Dokumentasi Apache :

Karakter wildcard style-shell (fnmatch ()) dapat digunakan untuk memasukkan beberapa file sekaligus, dalam urutan abjad . Selain itu, jika Sertakan menunjuk ke direktori, bukan file, Apache akan membaca semua file dalam direktori itu dan subdirektori apa pun. Tetapi memasukkan seluruh direktori tidak dianjurkan, karena mudah untuk secara tidak sengaja meninggalkan file sementara dalam direktori yang dapat menyebabkan httpd gagal.

tersangka
sumber
Terima kasih, itu menjawab pertanyaan 1 & 2 tentunya. Saya melihat melalui dokumen Apache tetapi tidak dapat menemukan jawabannya.
chrtp
Secara luas (urutan item konfigurasi menimpa item sebelumnya) yang benar. Tentu saja jika perintahnya ada di bagian konfigurasi yang sama. Tetapi sebagai contoh adalah mungkin (menggunakan AllowOverride) untuk menimpa item konfigurasi dengan konfigurasi dalam .htaccessfile.
tersangka
Maaf, saya mengedit komentar saya sebelum saya melihat Anda. Tidak ada .htaccess dalam kasus ini, tetapi ada file yang dimulai dengan 't' yang mengesampingkan semua yang lain. Saya akan mengganti nama atau memindahkan file.
chrtp
1
@ chrtp, dan mengapa file yang dimulai dengan takan menimpa semua yang lain?
Andrew Savinykh
1

Apache memuat konfigurasi tambahan berdasarkan direktif "Sertakan". Mungkin terlihat seperti ini:

Include conf.d/*.conf

Jadi, jelas, itu termasuk semua yang ada di "conf.d" yang terlihat seperti "* .conf".

Untuk membuatnya semakin gila, Anda dapat menambahkan sejumlah direktori sembarang dengan "include" yang kesemuanya dapat berisi file konfigurasi yang kira-kira sama, yang semua akan dengan senang hati saling menimpa saat start up ... Dan kemudian mereka sendiri akan ditunggangi oleh file .htaccess di berbagai direktori yang dihosting.

Sejauh yang saya tahu, httpd.conf adalah yang pertama, diikuti oleh direktori dalam urutan di mana mereka dimasukkan dan kemudian secara alfabet dari sana.

Waktu yang baik Anda dapat menggunakan apachectl -t atau apachectl configtest untuk mengetahui apakah konfigurasi Anda akan menyebabkan masalah atau tidak.

Satanicpuppy
sumber
1
Terima kasih, sepertinya seseorang telah meninggalkan file bernama template.conf di sana yang tentu saja memuat terakhir dan kemudian menimpa file lain yang menentukan jalur ke / Temp. Saya hanya bisa menebak apa lagi yang rusak dengan itu di sana!
chrtp
1
@ chrtp Untuk menambah hiruk-pikuk, arahan dapat ditentukan saat runtime menggunakan -C (untuk menambahkannya sebelum membaca file konfigurasi) dan -c (untuk membacanya setelah file konfigurasi), sehingga Anda dapat mengambil seluruh konfigurasi yang berbeda dari baris perintah Pada mulanya.
Satanicpuppy
1

Saya ingin mengubah urutan cukup buka file conf pertama di situs direktori-tersedia dan sebelum VirtualHost pertama *: 80 tambahkan kode host virtual Anda.

Dalam kasus saya, saya ingin hub.xxx.com.conf sebelum bayxxx.com.conf. Jadi saya buka hub.xxx.com.conf dan tempatkan virtual host di awal file

Sebagai contoh:

<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>
Pavel
sumber