Я пытаюсь упаковать 2 приложения, которые используют nginx в качестве прокси-сервера и доставить каждый файл конфигурации в /etc/nginx/conf.d/
.
Делать это в одном файле ( combined.conf
) прекрасно работает:
upstream backend1 {
http://localhost:8989;
}
upstream backend2 {
http://localhost:8990;
}
server {
location /backend1/ {
proxy_pass http://backend1;
}
location /backend2/ {
proxy_pass http://backend2;
}
Однако при разбиении на 2 файла один из перенаправлений систематически завершается ошибкой:
backend1.conf
:upstream backend1 { http://localhost:8989; } server { location /backend1/ { proxy_pass http://backend1; }
backend2.conf
:upstream backend2 { http://localhost:8990; } server { location /backend2/ { proxy_pass http://backend2; }
Итак, мой вопрос: может ли http
узел иметь 2 разных server
потомка?
Документация Nginx ничего не говорит об этом.
Другие люди, кажется, преуспели с такой архитектурой, хотя :(
Версия Nginx - 1.1.19-1ubuntu0.1.
Спасибо за любой совет!
Ответы:
после такого урчания и тестирования я нашел способ заставить его работать и иметь возможность отправлять один файл конфигурации на приложение.
Вот он, отправленный в одном общем файле и паре файлов upstream / location для каждого приложения:
/etc/nginx/conf.d/common-proxies.conf
:/etc/nginx/locations/backend1.conf
/etc/nginx/locations/backend2.conf
/etc/nginx/upstreams/backend1.conf
/etc/nginx/upstreams/backend2.conf
источник
upstream backend { server 127.0.0.1:8080 max_fails=3 fail_timeout=30s; }
. Кроме того, это работает с;
:)Блок http может иметь много дочерних элементов сервера. Однако nginx выбирает один блок сервера для обработки запроса. Таким образом, запрос никогда не «видит» местоположение backend2, потому что оно совпадает с первым блоком сервера.
источник
location
директива, которая сосет и получает запрос, предназначенный для backend2?server
блока, когда nginx ищет подходящееserver
для пересылки запроса?