niginx упрощение конфигурации директив местоположения

У меня есть следующая (отредактированная для простоты) конфигурация nginx:

server{
        location ~ /saml/ {
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_connect_timeout 300;
            proxy_send_timeout 300;
            proxy_read_timeout 300;
            send_timeout 300;
            proxy_pass https://acme.com;
        }

        location / {
            try_files $uri $uri/ /index.html;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_connect_timeout 300;
            proxy_send_timeout 300;
            proxy_read_timeout 300;
            send_timeout 300;
            proxy_pass https://acme.com;
        }
}

Как видите, у меня определены два местоположения. Единственное различие между ними состоит в том, что любой URL, содержащий / SAML / *, не получит строку try_files .

Все остальное то же самое. Есть ли более чистый и управляемый способ написать это?

1
задан 10 April 2019 в 20:04
1 ответ

Многие директивы в Nginx могут быть унаследованы из окружающего контекста. Вам нужны только операторы proxy_pass и try_files в определенных блоках location .

Например:

server{
    root ...;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_connect_timeout 300;
    proxy_send_timeout 300;
    proxy_read_timeout 300;
    send_timeout 300;

    location ~ /saml/ {
        proxy_pass https://acme.com;
    }
    location / {
        try_files $uri $uri/ /index.html;
        proxy_pass https://acme.com;
    }
}

В качестве альтернативы можно поместить общие операторы в отдельный файл и используйте оператор include . Подробнее см. этот документ .

1
ответ дан 3 December 2019 в 23:05

Теги

Похожие вопросы