У меня на Gunicorn запущено приложение Django. Я пытаюсь настроить Nginx для обслуживания статических файлов. У меня есть два восходящих сервера, они происходят из двух разных каталогов и двух разных экземпляров Gunicorn. Обычно это один и тот же код в обеих папках, но когда мне нужно обновить код, я отключу один из экземпляров Gunicorn, чтобы Nginx прекратил маршрутизацию трафика к этому экземпляру, обновил код и снова включил Gunicorn.
Есть два статических каталога (из первичного экземпляра Gunicorn, один из вторичного). Когда я делаю обновление, скажем, основного, трафик больше не направляется на основной, и я не хочу, чтобы Nginx обслуживал статические файлы из основного статического каталога.
Как я могу настроить Nginx для этого? По сути, мне нужны два статических корня, по одному на каждый вышестоящий сервер.
Я не знаю, как сделать это автоматически в экземпляре Nginx, поскольку вы говорите о решении о маршрутизации, которое принимается за обслуживанием статических файлов. Может быть, если Nginx предоставит некоторую информацию о среде из общей службы прокси / маршрутизации, не связанной с текущим запросом ?? В переменные упомянутый вид будет заполнен пост-маршрутизацией.
В противном случае я могу придумать два варианта. У вас может быть несколько файлов конфигурации nginx: двойная конфигурация, первичная конфигурация, вторичная конфигурация
N/NP/NS
/ \
GP GS
Если вы хотите изменить топологию, скопируйте конфигурацию (или создайте сценарий для ее изменения) на место и переконфигурировать.
В качестве альтернативы вы можете запустить два экземпляра Nginx (первичный, вторичный) серверов, каждый из которых настроен со своими соответствующими статическими каталогами и экземплярами gunicorn. Затем контролируйте трафик через основной / дополнительный Nginx во время выпусков, а не через Gunicorn.
N
/ \
NP NS
| |
GP GS
Вам все еще нужно что-то спереди, например, экземпляр nginx, балансировщик нагрузки или управление трафиком DNS, чтобы направлять / контролировать трафик на два ваших веб-сервера.