Как правильно понять трехзвенную архитектуру?
У меня есть вот такая архитектура программы ( я это пока плохо понимаю). Я использую следующие технологии:
- c# (WPF)
- Nginx
- Django (запускаю через gunicorn)
- s3 хранилище (для получение фильмов)
вот конфиг nginx:
server {
listen 8080;
server_name 1.2.3.4;
client_max_body_size 5G;
location / {
proxy_pass http://127.0.0.1:8888;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /media/ {
alias /var/media/films/;
location ~* \.png$ {
try_files $uri $uri.jpg =404;
}
expires 30d;
sendfile on;
tcp_nopush on;
}
location /static/ {
alias /home/user/mybackend/static/;
expires 30d;
}
}
}
В начале C# (WPF) приложение делает запрос на ip:8080/api/movies, потом как я понимаю запрос почему-то идёт на nginx (наверное потому-что в кфг у nginx на vps прописано слушать 8080 порт). Далее nginx проверят через свой location куда именно ему идти дальше, /media и /static даёт файлы в C# напрямую из /media или /static, без Django. А location /получается летит черезproxy_pass http://127.0.0.1:8888;` на моё локальный сервер внутри vps получается прямо в Django. А Django потом идёт на БД для получение данных превращает их JSON и обратно отдаёт Nginx, а Nginx уже в C# приложение.
Вот так я себе это плюс минус представляю, можете пожалуйста объяснить где я не прав, где может прав. И так же почему это называю трёхзвенной архитектурой, а не просто клиент-сервер ? И нужен ли Nginx в данной схеме и почем и как он обеспечивает скорость и безопасность? А вот на счет gunicorn это то что внутри vps запускает локально Django ?