Розщеплення довгих рядків у файлі конфігурації nginx


15

Для того, щоб не переносити сміття в бек-енд, я маю суворий перегляд правил location. Це виглядає приблизно так:

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

Я хотів би скласти рядок на 80 символів, чи є спосіб розділити конфігурацію? Наступні результати призводять до синтаксичної помилки, але я щось шукаю:

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" {

Я не зміг знайти підказки в документації ( http://wiki.nginx.org/ConfigNotation ні http://wiki.nginx.org/HttpCoreModule#location згадувати щось про складні лінії)


Не могли б ви створити свій рядок із декількох інтерпольованих фрагментів? (Я не маю уявлення)
bsb

@bsb Ви не можете використовувати змінні в виразах місцеположення, тому ні, ви не можете встановлювати змінні та використовувати інтерполяцію рядків.
Лекенштейн

Відповіді:


7

Я не думаю, що ти можеш це зробити.

nginx поводиться з усіма пробілами однаково, тому навіть якщо ви намагалися поділити рядок так, і nginx міг би проаналізувати її так, як ви задумали, ви намотаєте регулярний вираз із купою пробілів у ньому, що я впевнений, чи ні ' t що ти хочеш. Якщо nginx не зможе його розібрати, що швидше за все, ви просто отримаєте синтаксичну помилку.

Вам просто доведеться жити кількома довгими рядками або робити менш складні регулярні вирази.


Ну, якщо не може бути провідних просторів, я можу з цим жити. Але, схоже, новий рядок також трактується буквально.
Лекенштейн

Це справді не кінець світу. :)
Майкл Хемптон

1
Поки що я застряг з location ".../[a-zA-Z0-9_...-]+$"малюнком, за яким інший location ~ "\.pkg\.tar\.xz$"всередині. Дякую за вашу відповідь, сподіваємось, на наступний день з’явиться краща відповідь;)
Lekensteyn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.