Nu abordați porturile în adrese URL, puterea lui nginx este capacitatea sa de proxy invers.
Mai întâi, creați fișiere de configurare diferite pentru fiecare aplicație web, nu distrugeți totul într-o singură configurație de server - sau chiar mai rău, în nginx.conf fişier.
Setați o în amonte deasupra principalului tău bloc de server pentru fiecare aplicație:
aplicație web în amonte1 {
server 127.0.0.1:7000 weight=1 fail_timeout=0; #timeout-ul și setările de greutate sunt opționale
}
În interiorul blocurilor de server, când nginx accesează locația „/”, apelați upstream:
Server {
asculta 443 ssl http2; #dacă mergeți cu HTTPS - ceea ce ar trebui
nume_server webapp1.random-company.com;
[...]
Locație / {
[...]
proxy_pass http://webapp1;
}
Repetați pentru aplicație web2 în consecinţă:
aplicație web în amonte2 {
server 127.0.0.1:8000;
}
Server {
asculta 443 ssl http2; #dacă mergeți cu HTTPS - ceea ce ar trebui
nume_server webapp2.random-company.com;
[...]
Locație / {
[...]
proxy_pass http://webapp2;
}
În ceea ce privește aplicațiile Django / Flask, de fapt nu trebuie să apelați aplicațiile prin TCP/IP, ați putea avea nginx să asculte direct socket-urile UNIX ale acestora. Ce folosiți pentru a livra aplicația? uWSGI, Gunicorn, (...)?
Citiri suplimentare pentru Flask pe uWSGI
În general, acesta nu este neapărat un subiect Ubuntu, poate că ați dori să verificați în schimb StackOverflow sau Serverfault.