Я много занимаюсь изучением серверной архитектуры. В настоящее время я использую сервер приложений django и сервер базы данных postgresql в веб-службах Amazon. Весь мой контент обслуживается через Gunicorn. Я хотел бы знать, почему серверы nginx расположены перед серверами приложений django. Какова их цель? Вот схема:
https://d36cz9buwru1tt.cloudfront.net/architecture_diagram_praekelt-1.jpg
Во многих стеках nginx часто помещается перед единорогом или пушкой для буферизации ответов медленным клиентам.
Дополнительную информацию см. В документации nginx:
http://wiki.nginx.org/HttpProxyModule#proxy_buffering
ELB не выполняет буферизацию, поэтому наличие nginx может спасти ваш бекон.
Обычно вы устанавливаете обратный прокси-сервер перед внутренними серверами, такими как gunicorn (или tomcat в мире Java), потому что они имеют больше функций и более устойчивы.
Например, с помощью nginx вы можете добавить детальный контроль доступа, отключить SSL и не быть настолько уязвимыми для атак DOS (это то, что Gunicorn специально упоминает в своих документах ( http://docs.gunicorn.org/en/latest/deploy.html ).
В EC2 вы можете заменить nginx и haproxy на ELB, если у вас нет специальных функций nginx или haproxy. Видеть http://harish11g.blogspot.com/2012/11/amazon-elb-vs-haproxy-ec2-analysis.html для сравнения ELB и haproxy.