Tách dòng dài trong tệp cấu hình nginx


15

Để không chuyển rác vào back-end, tôi có một regex nghiêm ngặt cho một locationchỉ thị. Nó trông như thế này:

location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/...(more|restrict).ext {
    # other directives
}

Tôi muốn gấp dòng ở 80 ký tự, có cách nào để tách cấu hình không? Các kết quả sau đây trong một lỗi cú pháp, nhưng là một cái gì đó tôi đang tìm kiếm:

location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/"\
            "...(more|restrict).ext" {
# results in a literal newline (%0A) being accepted
location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/
...(more|restrict).ext" {

Tôi không thể tìm thấy gợi ý trong tài liệu ( http://wiki.nginx.org/ConfigNotation cũng như http://wiki.nginx.org/HttpCoreModule#location đề cập bất cứ điều gì về các đường gấp)


Bạn có thể xây dựng chuỗi của bạn từ nhiều đoạn được nội suy? (Tôi không có ý kiến ​​gì)
bsb

@bsb Bạn không thể sử dụng các biến trong biểu thức vị trí, vì vậy không, bạn không thể đặt biến và sử dụng phép nội suy chuỗi.
Lekensteyn

Câu trả lời:


7

Tôi không nghĩ bạn có thể làm điều này.

nginx đối xử với tất cả các khoảng trắng bằng nhau, vì vậy ngay cả khi bạn đã cố gắng phân tách chuỗi của mình như vậy và nginx có thể phân tích cú pháp theo cách bạn dự định, bạn sẽ kết thúc bằng một biểu thức chính quy với một khoảng trắng trong đó, mà tôi chắc chắn là không t những gì bạn muốn. Nếu nginx không thể phân tích cú pháp, nhiều khả năng, bạn sẽ gặp lỗi cú pháp.

Bạn sẽ phải sống với một vài dòng dài hoặc thực hiện các biểu thức chính quy ít phức tạp hơn.


Chà, nếu không thể có những không gian hàng đầu, tôi có thể sống với điều đó. Nhưng một dòng mới dường như cũng được giải thích theo nghĩa đen.
Lekensteyn

Nó thực sự không phải là kết thúc của thế giới. :)
Michael Hampton

1
Bây giờ tôi đang bị mắc kẹt với một location ".../[a-zA-Z0-9_...-]+$"mô hình theo sau bởi một mô hình khác location ~ "\.pkg\.tar\.xz$"bên trong. Cảm ơn câu trả lời của bạn, hy vọng một ngày nào đó câu trả lời tốt hơn xuất hiện;)
Lekensteyn
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.