我尝试寻找该问题的解决方案,但找不到有关我的特定设置的任何文档/提示。
我的设置:
后端服务器:ngnix:virtualenv 中的 2 个不同网站(2 个顶级域名),运行 gunicorn/python/django 后端服务器硬件(VPS)2gb 内存,8 CPU
数据库服务器:postgresql - pg_bouncer
后端服务器硬件 (VPS) 1gb ram, 8 CPU
Varnishserver:仅运行 varnish
Varnishserver 硬件(VPS)1gb ram,8 CPU
我正在尝试设置一个 varnish 服务器来处理罕见的流量高峰(每秒 20 000 个唯一请求)当电视节目提到其中一个网站时就会出现高峰。
我需要做什么才能让 Varnish 服务器在我的后端服务器上缓存两个站点/域?
我的 /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;
}
}
}
现在,如果我尝试 varnishserver 的 IP,我只能获得 domain1.com 的服务。如果我将两个域的 DNS 更改为指向 varnishserver,是否一切正确,或者是否需要进行额外设置才能使其工作?
问题 2:我是否需要为 Varnish 配备专用服务器,或者我是否只可以在后端服务器上安装 Varnish,否则服务器会很快耗尽内存?