具有多个虚拟主机的 nginx 服务器前面的 Varnish 服务器

具有多个虚拟主机的 nginx 服务器前面的 Varnish 服务器

我尝试寻找该问题的解决方案,但找不到有关我的特定设置的任何文档/提示。

我的设置:

后端服务器: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,否则服务器会很快耗尽内存?

相关内容