Theo thứ tự nào thì Apache tải các tệp conf và cái nào?


10

Tôi đang xem một máy chủ CentOS 6.5 có cài đặt webframework đã được nhiều người thêm vào trong nhiều năm qua. Có những gì trông giống như 5 tệp .conf hoạt động trong / conf, bao gồm httpd.conf.

Trong httpd.conf, bao gồm các lần đọc

Include conf.d/*.conf

và nó lấy tất cả các tệp trong thư mục đó, nhưng không có bất kỳ thứ tự cụ thể nào được áp dụng mà tôi biết, vậy còn thư mục / conf (no .d) thì sao?

Có một cài đặt cho biết thứ tự tải hoặc chúng chỉ được lấy từ az?

Tôi không phải là quản trị viên máy chủ, tôi là nhà phát triển và vấn đề nằm ở đường dẫn tải tệp lên / Thư mục tạm thời, nơi tôi đã kiểm tra xem đường dẫn được chỉ định có đúng với các tệp mà bản thân tôi quan tâm không.

Vì vậy, câu hỏi đầu tiên là:

Apache có tải mọi thứ từ / conf hay có một danh sách được chỉ định ở đâu đó không?

Câu hỏi thứ 2 sẽ là:

Theo thứ tự nào Apache tải các tệp, theo thứ tự abc?

Cuối cùng:

Có một tập tin không kết thúc bằng .conf có được bao gồm không? Ví dụ: nếu tôi đặt tên một cái gì đó myconfig.conf.old thì Apache sẽ bỏ qua nó chứ?

Câu trả lời:


14

Thứ tự là theo thứ tự abc. Nó chỉ tải những gì đường dẫn Bao gồm chỉ định. Trong trường hợp Include conf.d/*.confapache sẽ tải tất cả các tệp có tên kết thúc bằng .conf.

Đây là một trích xuất từ Tài liệu Apache :

Các ký tự đại diện kiểu Shell (fnmatch ()) có thể được sử dụng để bao gồm nhiều tệp cùng một lúc, theo thứ tự bảng chữ cái . Ngoài ra, nếu Bao gồm các điểm vào một thư mục, thay vì một tệp, Apache sẽ đọc tất cả các tệp trong thư mục đó và bất kỳ thư mục con nào. Nhưng bao gồm toàn bộ thư mục không được khuyến nghị, vì rất dễ để vô tình để các tệp tạm thời trong một thư mục có thể khiến httpd bị lỗi.


Cảm ơn bạn, câu trả lời câu hỏi 1 & 2 chắc chắn. Tôi đã xem qua các tài liệu của Apache nhưng không thể tìm thấy câu trả lời.
chrtp

Nói chung (thứ tự của các mục cấu hình ghi đè các mục trước đó) là chính xác. Chắc chắn nếu các lệnh nằm trong cùng một phần cấu hình. Nhưng ví dụ, có thể (sử dụng AllowOverride) để ghi đè các mục cấu hình với cấu hình trong một .htaccesstệp.
suspectus

Xin lỗi, tôi đã chỉnh sửa nhận xét của mình trước khi tôi thấy bạn. Không có .htaccess trong trường hợp này, nhưng có một tệp bắt đầu bằng 't' đang ghi đè tất cả các tệp khác. Tôi sẽ đổi tên hoặc di chuyển tệp.
chrtp

1
@chrtp, và tại sao một tệp bắt đầu bằng tsẽ ghi đè tất cả các tệp khác?
Andrew Savinykh

1

Apache tải cấu hình bổ sung dựa trên chỉ thị "Bao gồm". Nó có thể trông như thế này:

Include conf.d/*.conf

Vì vậy, rõ ràng, nó bao gồm mọi thứ trong "conf.d" trông giống như "* .conf".

Để làm cho nó điên rồ hơn nữa, bạn có thể thêm một số lượng thư mục tùy ý với "bao gồm" tất cả các tệp có thể chứa các tệp cấu hình gần giống nhau, tất cả sẽ vui vẻ ghi đè lên nhau khi khởi động ... Và sau đó chính chúng bị quá tải bởi tập tin .htaccess trong các thư mục được lưu trữ khác nhau.

Gần như tôi có thể nói, httpd.conf là đầu tiên, tiếp theo là các thư mục theo thứ tự chúng được bao gồm và sau đó theo thứ tự abc từ đó.

Thời gian tốt. Bạn có thể sử dụng apachectl -t hoặc apachectl configtest để có được một số ý tưởng về việc cấu hình của bạn có gây ra sự cố hay không.


1
Cảm ơn bạn, có vẻ như ai đó đã để lại một tệp có tên template.conf trong đó tất nhiên tải lần cuối và sau đó ghi đè bất kỳ tệp nào khác chỉ định đường dẫn đến / Temp. Tôi chỉ có thể đoán những gì khác đang bị phá vỡ ở đó!
chrtp

1
@chrtp Để thêm tính vui nhộn, các lệnh có thể được chỉ định trong thời gian chạy bằng cách sử dụng -C (để thêm chúng trước khi đọc tệp cấu hình) và -c (để đọc chúng sau tệp cấu hình), vì vậy bạn có thể lấy toàn bộ cấu hình khác từ dòng lệnh khi khởi động.
Satanicpuppy

1

Tôi muốn thay đổi thứ tự chỉ cần mở tệp conf đầu tiên trong các trang web thư mục có sẵn và trước Virtualhost đầu tiên *: 80 thêm mã máy chủ ảo của bạn.

Trong trường hợp của tôi, tôi muốn hub.xxx.com được đặt trước bayxxx.com. Vì vậy, tôi mở hub.xxx.com và đặt máy chủ ảo vào đầu tệp

Ví dụ:

<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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.