Я попытался найти решение для этого, но не могу найти никакой документации / советов по моей конкретной настройке.
Моя установка:
Backendserver: ngnix: 2 разных веб-сайта (2 основных домена) в virtualenv, под управлением gunicorn / python / django Backendserver hardware (VPS) 2gb ram, 8 CPU
Сервер базы данных: postgresql - pg_bouncer
Аппаратное обеспечение Backendserver (VPS) 1 ГБ оперативной памяти, 8 ЦП
Varnishserver: только текущий лак
Оборудование Varnishserver (VPS) 1 ГБ оперативной памяти, 8 ЦП
Я пытаюсь настроить лаковый сервер для обработки редких всплесков трафика (20 000 уникальных запросов в секунду). Всплеск происходит, когда телепрограмма упоминает один из сайтов.
Что мне нужно сделать, чтобы сервер Varnish кэшировал оба сайта / домена на моем backendserver?
Мой /etc/varnish/default.vcl:
backend django_backend {
.host = "local.backendserver.com";
.port = "8080";
}
Мой /usr/local/nginx/site-avaible/domain1.com
upstream gunicorn_domain1 {
server unix:/home/<USER>/.virtualenvs/<DOMAIN1>/<APP1>/run/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
listen 8080;
server_name domain1.com;
rewrite ^ http://www.domains.com$request_uri? permanent;
}
server {
listen 80 default_server;
listen 8080;
client_max_body_size 4G;
server_name www.domain1.com;
keepalive_timeout 5;
# path for static files
root /home/<USER>/<APP>-media/;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://gunicorn_domain1;
break;
}
}
}
Мой /usr/local/nginx/site-avaible/domain2.com
upstream gunicorn_domain2 {
server unix:/home/<USER>/.virtualenvs/<DOMAIN2>/<APP2>/run/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
listen 8080;
server_name domain2.com;
rewrite ^ http://www.domains.com$request_uri? permanent;
}
server {
listen 80;
listen 8080;
client_max_body_size 4G;
server_name www.domain2.com;
keepalive_timeout 5;
# path for static files
root /home/<USER>/<APP>-media/;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://gunicorn_domain2;
break;
}
}
}
Прямо сейчас, если я попробую использовать IP-адрес сервера varnishserver, я получу только домен domain1.com. Будет ли все правильно, если я изменю DNS двух доменов так, чтобы они указывали на varnishserver, или требуется дополнительная настройка, прежде чем это сработает?
Вопрос 2: Нужен ли мне выделенный сервер для varnish, или я могу просто установить varnish на свой backendserver, или на сервере быстро закончится память?