Не указывайте порты в URL-адресах, сила nginx заключается в его возможности обратного прокси.
Во-первых, создавайте разные конфиги для каждого веб-приложения, а не просто громите все в одной конфигурации сервера — или, что еще хуже, в nginx.conf файл.
Установить вверх по течению над вашим основным серверный блок для каждого приложения:
восходящее веб-приложение1 {
сервер 127.0.0.1:7000 вес=1 fail_timeout=0; #настройки тайм-аута и веса необязательны
}
Внутри серверных блоков, когда nginx обращается к местоположению «/», вызовите восходящий поток:
сервер {
слушать 443 ssl http2; #если вы используете HTTPS - что вам следует
имя_сервера webapp1.random-company.com;
[...]
место расположения / {
[...]
прокси_пасс http://webapp1;
}
Повторить для веб-приложение2 соответственно:
восходящее веб-приложение2 {
сервер 127.0.0.1:8000;
}
сервер {
слушать 443 ssl http2; #если вы используете HTTPS - что вам следует
имя_сервера webapp2.random-company.com;
[...]
место расположения / {
[...]
прокси_пасс http://webapp2;
}
Что касается приложений Django / Flask, вам на самом деле не нужно вызывать приложения через TCP/IP, вы можете заставить nginx напрямую прослушивать их сокеты UNIX. Что вы используете для доставки приложения? uWSGI, Гуникорн, (...)?
Дальнейшее чтение для Flask на uWSGI
В общем, это не обязательно тема Ubuntu, возможно, вместо этого вы захотите проверить StackOverflow или Serverfault.