Я использую AWS и в настоящее время использую ELB (для балансировки нагрузки и завершения HTTPS) перед двумя блоками EC2, на которых работает Gunicorn. По довольно понятным причинам (маршрутизация определенных запросов для статических файлов) я хотел бы запустить Nginx перед этими серверами приложений.
У меня вопрос, а в идеале я должен иметь отдельную машину только для Nginx? Или вполне разумно просто запустить Nginx на каждом из этих двух серверов, указав ELB на порт Nginx для каждого сервера?
Что хорошего и плохого?
Это зависит!
Запуск обоих на одной машине прост в настройке, дешевле в эксплуатации и может полностью удовлетворить ваши потребности (по крайней мере, для начала).
Преимущества наличия отдельных серверов приложений: ... Возможность настраивать каждый сервер независимо и возможность масштабировать каждый независимо. Если у вас много трафика или вам нужно масштабировать одно, а не другое, это может быть весьма полезным преимуществом (и может привести к некоторой экономии средств в долгосрочной перспективе).
Обычно начинают с одного сервера приложений, а потом, когда все становится сложнее, можно разделить его. Если у вас есть время и деньги, вы можете разделить их с самого начала, но если вы не знаете, что вам это понадобится, я бы не стал переживать по этому поводу.