Nginx:使用uwsgi_pass与proxy_pass后备?

如果uwsgi服务器不可用,是否可以configurationNginx来代理uwsgi服务器( uwsgi_pass ),回到标准的http代理( proxy_pass )?

我的开发环境作为给定端口上的标准HTTP服务器来运行,但是在生产中它将在uWSGI套接字下运行。 我希望能够开发我的应用程序,然后(仍然在我的开发计算机上)在uwsgi服务器下启动应用程序进行testing,而不必每次都切换我的nginxconfiguration。 如果nginx可以configuration为使用uwsgi_pass 尝试 ,但是如果出现错误(因为uwsgi服务器没有运行),则返回到proxy_pass,这将是理想的。

我也可以看到这在生产环境中很方便:通常,代理本地uwsgi套接字,但如果由于某种原因不起作用(对于某些任意定义不起作用),代理到某个辅助http服务器。 不过,现在只是为了让开发更方便。

假设你将从uWSGI后端得到一个502超时错误,下面的代码应该可以做你正在寻找的东西。

 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响应,你可以根据需要进行编辑。