Ошибка загрузки бэкэнда - Varnish не загружает бэкэнд Drupal

Ошибка загрузки бэкэнда - Varnish не загружает бэкэнд Drupal

Я запускаю приложение Drupal 7 (3 бэкенда), и у меня есть 3 сервера Varnish, которые постоянно отказываются извлекать бэкенд. Я прочитал много похожих ошибок здесь, но все еще не могу решить свою проблему, выдавая 503 Varnish fetch failed guru meditation. Я прочитал все посты здесь, и все, похоже, рекомендовали высокий тайм-аут, я установил 600 с, и многие не рекомендуют .probe, у меня round.robin (переключение бэкенда), и вот моя конфигурация бэкенда:

backend project1 {
.host = "myhost.ip";
.port = "80";
.connect_timeout = 600s;
.first_byte_timeout = 600s;

.probe = {
.timeout = 600s;
.interval = 10s;
.window = 5;
.threshold = 2;
.request =
"GET HTTP/1.1"
"Host: example.com"
"Connection: close";
}
}

Кстати, я просмотрел свой журнал ошибок и журнал доступа и заметил, что у меня слишком много подобных ошибок, но я не хочу, чтобы вы были предвзяты.

[info] Client prematurely closed connection (broken pipe)

и иногда

reqv failed

В качестве примечания я также хочу упомянуть, что у меня все еще сохраняется ошибка fast-cgi, но я не думаю, что она связана с моей ошибкой Varnish:

Primary Script unknown  ......, fastcgi, upstream:127.0.0.1

Я запускаю nginx+php-fpm через fast-cgi. Я действительно не уверен, какую конфигурацию Varnish ожидает от бэкэнда, из-за чего он отказывается ее получать,

Так уж получилось, что неправильная конфигурация nginx уже вызывала у меня эту ошибку, поэтому вот моя конфигурация nginx:

user nginx nginx;
worker_processes 4;

error_log /var/log/nginx/error.log info;

events {
    worker_connections 8192;
    multi_accept    on;
    use epoll;
}
worker_rlimit_nofile 64000;
http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    log_format main
            '$remote_addr - $remote_user [$time_local] '
            '"$request" $status $bytes_sent '
            '"$http_referer" "$http_user_agent" ';

    client_header_timeout 10m;
    client_max_body_size 100m;
    client_body_timeout 10m;
    send_timeout 10m;
    client_body_buffer_size 3m;
    connection_pool_size 256;
    client_header_buffer_size 1k;
    large_client_header_buffers 4 2k;
    request_pool_size 32k;

    gzip            on;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
    gzip_min_length 10240;
    gzip_proxied    expired no-cache no-store private auth;
    gzip_types      text/plain application/xml;

    open_file_cache         max=2000 inactive=20s;
    open_file_cache_valid   60s;
    open_file_cache_min_uses        5;
    open_file_cache_errors          off;

    output_buffers 1 32k;
    postpone_output 1460;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    fastcgi_send_timeout 1800;
    fastcgi_read_timeout 1800;
    fastcgi_connect_timeout 1800;
    fastcgi_ignore_client_abort on;
    keepalive_timeout 75 20;
    ignore_invalid_headers on;
    index index.html;

    server {
            listen 80;
            server_name  example.com;
            rewrite ^(.*) http://example.com$1 permanent;
            }
    server {
            listen 80;
            server_name www.example.com;
            access_log /var/log/nginx/access.log main;
            error_log /var/log/nginx/error.log info;              
            root /var/www/public;
            index index.php index.phtml index.html;
            autoindex on;

            gzip_types text/plain text/css application/json application/x-ja
vascript text/xml application/xml application/xml+rss text/javascript applicatio
n/javascript;

            location ~ \..*/*\.php$ {
                    return 403;
            }
            location ~^/sites/.*/private/{
                    return 403;
            }
            location ~^/sites/.*/files/* {
                    try_files $uri @rewrite;
            }
            location ~ (^|/)\. {
                    return 403;
            }

            location / {

                    try_files $uri @rewrite;
                    }
            location @rewrite {
                    rewrite ^ /index.php;

            }
            location ~ \.php$ {
                    try_files $uri @rewrite;
                    #fastcgi_pass unix:/var/run/php5-fpm.sock;
                    fastcgi_pass 127.0.0.1:9000;
                    fastcgi_index  index.php;
             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                    fastcgi_buffer_size 128k;
                    fastcgi_buffers 256 16k;
                    fastcgi_busy_buffers_size 256k;
                    fastcgi_temp_file_write_size 256k;
                    fastcgi_keep_conn       off;
                    include /etc/nginx/fastcgi_params;

                    }


            location ~* \.(jpg|jpeg|css|gif|png|js|ico|xml)$ {

                    try_files $uri $uri/ ;
                    access_log off;
                    log_not_found   off;
                    expires 30d;
                    }

}

Может ли кто-нибудь указать мне, в каком направлении отлаживать эту проблему? Я, скорее всего, уверен, что pb находится на моем бэкэнде, а не на Varnish, но не уверен, почему сайт иногда загружается, а иногда выдает прямое/ужасное сообщение «backend fetch failed 503 - guru meditation». Спасибо за вашу бесценную помощь.

ОБНОВЛЯТЬ:

исправление заключалось в отключении gzip. У меня был пустой контент и перенаправление на домашней странице, поэтому gzip+ header-content-length=0 (пустой) вызвал красный флаг для Varnish, Varnish помечен как нездоровый для сжатия чего-либо с размером 0. Неправильный заголовок. Либо отключите gzip, либо верните какой-то контент в ответ сервера, чтобы исправить эту проблему

решение1

В вашем .requestвы, похоже, не указали документ. Я предполагаю, что он пытается загрузить весь ваш сайт Drupal как зонд. Вы можете изменить это на:

"GET /sitehealth.html HTTP/1.1"

где sitehealth.htmlнаходится простой текстовый файл, который может загрузить зонд.

Дальнейшее устранение неполадок, можно ли полностью отключить зонды и посмотреть, изменится ли ситуация? Возникают ли какие-либо ошибки при прямом обращении к веб-сайту, без прохождения через кэш?

По сути, выберите самую простую конфигурацию, которая надежно работает, а затем добавляйте дополнительные функции по одной за раз, пока что-то не сломается.

Связанный контент