Можно ли настроить Nginx на прокси-сервер uwsgi (uwsgi_pass
), возвращаясь к стандартному http-прокси (proxy_pass
) если сервер uwsgi недоступен?
Моя среда разработки работает как стандартный HTTP-сервер на заданном порту, но на производстве он будет работать под сокетом uWSGI. Я хотел бы иметь возможность разработать свое приложение, а затем (все еще на моей машине разработки) запустить приложение на сервере uwsgi для тестирования без необходимости каждый раз переключать мою конфигурацию nginx. Если бы nginx можно было настроить на пытаться с uwsgi_pass, но если он получил ошибку (потому что сервер uwsgi не запущен), вернитесь к proxy_pass, это было бы идеально.
Я также мог видеть, что это удобно в производственной среде: обычно это просто прокси для локального сокета uwsgi, но если по какой-то причине это не работает (для некоторого произвольного определения неработающего), прокси на какой-то вторичный http-сервер в другом месте. Однако для меня пока это просто сделать разработку более удобной.
Предполагая, что вы получите 502
ошибка тайм-аута из бэкэнда uWSGI, следующее должно делать то, что вы ищете.
uwsgi_intercept_errors on;
error_page 502 = @fallback;
location / {
uwsgi_pass uwsgi://192.168.0.1:9000;
<rest of your config>
}
location @fallback {
proxy_pass http://192.168.0.2;
<rest of your config>
}
Очевидно, подставьте свои собственные ценности, но это важные части. Если вы обнаружите, что получаете другой HTTP-ответ, вы можете редактировать его по мере необходимости.