Nginx bao gồm các tập tin cấu hình không theo thứ tự?


12

Là thứ tự trong đó Nginx bao gồm các tệp cấu hình cố định hay ngẫu nhiên? Apache tuyên bố rõ ràng các ký tự đại diện được mở rộng theo thứ tự bảng chữ cái. Với Nginx có vẻ như điều này không áp dụng, và hướng dẫn không nói gì về nó .

Trong thiết lập của tôi, 20_example.comđã được đưa vào trước 00_defaultđó, điều này đánh bại mục đích của tôi là xác định các lệnh được chia sẻ (như định dạng nhật ký) ở đó.

Câu trả lời:


23

Theo mã nguồn nginx nó sử dụng hàm global () với tham số GLOB_NOSORT , do đó, không thể thiết lập rõ thứ tự bao gồm tệp.

Điều này đã được thay đổi vào tháng 11 năm 2012 , phát hành lần đầu tiên vào ngày 1.3.10. Từ sự thay đổi :

bây giờ nếu chỉ thị "bao gồm" với mặt nạ được sử dụng trên các hệ thống Unix, các tệp được bao gồm được sắp xếp theo thứ tự bảng chữ cái.


3

Câu trả lời của AD7six không hoàn toàn chính xác. Thứ tự cũng có vấn đề khi hai khối máy chủ có cùng "tính đặc hiệu", ví dụ: khi cả hai sử dụng biểu thức chính quy trong server_name và yêu cầu đến khớp với cả hai:

server {
    server_name ~^(www\.)?(?<domain>foo\.com|bar\.com|baz\.com)$;
    ...
}

server {
    server_name ~^(www\.)?(?<domain>.+)$;
    ...
}

Trong trường hợp này, hai khối máy chủ không thể được trải trên hai tệp vì thứ tự của chúng không thể được đảm bảo.


1

Vì OP chỉ ra thứ tự log_format nên nó thực sự rất quan trọng, trong trường hợp log_formats tùy chỉnh, nếu bạn đặt trong cùng một thư mục cả hai loại tệp, một số tệp có log_formats, một số tệp có khối máy chủ sử dụng các log_formats đó, kết quả sẽ là một cấu hình rất cao không thể lặp lại.

Khi chúng tôi lần đầu tiên chuyển tay trang trại nginx thành con rối, chúng tôi bắt đầu thấy một số cài đặt nginx từ đầu đến thất bại trong một phần cứng / thiết lập giống hệt nhau, sau rất nhiều tình huống kỳ lạ như có hai / etc / nginx / * (- r) với md5match và cùng một nhị phân tạo ra các kết quả khác nhau (lỗi log_format không hợp lệ trên một và làm việc khác), chúng tôi đã học được một cách khó khăn khi đặt hàng nó thực sự rất quan trọng đối với một số chỉ thị như log_format.

Chúng tôi đã khắc phục sự cố bằng cách di chuyển các khối máy chủ ra khỏi conf.d / * vào một thư mục khác được bao gồm sau conf.d / *.

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.