Назад | Перейти на главную страницу

Varnish + Pound on Apache 503 Ошибки

Я получаю много, казалось бы, случайных ошибок 503 Service Unavailable при моей настройке Varnish + Pound на Apache. Я понятия не имею, с чего начать и в чем проблема. Я искал в Интернете тонну, и все предложения, которые я пробовал, просто не работали.

Итак, ниже моя установка.

Конфигурация лака

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -p connect_timeout=2500 \
             -p thread_pools=8 \
             -p thread_pool_max=2500 \
             -p max_restarts=8 \
             -s malloc,256m"

Лак VCL

backend default {
    .host = "127.0.0.1";
    .port = "8080";
    .connect_timeout = 3600s;
    .first_byte_timeout = 3600s;
    .between_bytes_timeout =  3600s;
}

Фунт конфиг

ListenHTTPS
    HeadRemove "X-Forwarded-Proto"
    AddHeader "X-Forwarded-Proto: https"
    Address 1.2.3.4 # server public ip
    Port 443
    xHTTP       0
    Cert "/etc/apache2/ssl/website.pem"
    Service
        Backend
            Address 127.0.0.1
            Port 80
        End
    End
End

Конфигурация Apache

Ports.conf

NameVirtualHost *:8080
Listen 8080

<IfModule mod_ssl.c>
    NameVirtualHost *:44333
    Listen 44333
</IfModule>

<IfModule mod_gnutls.c>
    NameVirtualHost *:44333
    Listen 44333
</IfModule>

сайты с поддержкой / веб-сайт-ssl

SetEnvIf X-Forwarded-Proto "^https$" HTTPS=on
<VirtualHost *:44333>
    DocumentRoot /var/www/website
    ServerName website.com
    ServerAlias www.website.com
    ServerAlias *.website.com

    <Directory /var/www/website>
            Options -Indexes
            Options FollowSymLinks
            AllowOverride All
        </Directory>

    <Location />
        SetEnv no-gzip
    </Location>

    SSLEngine on
    SSLCertificateFile /etc/apache2/ssl/website.crt
    SSLCertificateKeyFile /etc/apache2/ssl/website.key
    SSLCertificateChainFile /etc/apache2/ssl/provider.crt
    SSLProtocol all -SSLv2
    SSLHonorCipherOrder On
    SSLCipherSuite EECDH+AES:EDH+AES:-SHA1:EECDH+RC4:EDH+RC4:RC4-SHA:EECDH+AES256:EDH+AES256:AES256-SHA:!aNULL:!eNULL:!EXP:!LOW:!MD5
</VirtualHost>

Я не вижу ошибок в журнале apache, но у меня есть это из varnishlog

Varnishlog

 0 CLI          - Rd ping
    0 CLI          - Wr 200 19 PONG 1400458257 1.0
   13 BackendOpen  b default 127.0.0.1 49422 127.0.0.1 8080
   13 BackendXID   b 1621892887
   13 TxRequest    b GET
   13 TxURL        b /portal/home
   13 TxProtocol   b HTTP/1.1
   13 TxHeader     b Host: website.com
   13 TxHeader     b Cache-Control: max-age=0
   13 TxHeader     b Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
   13 TxHeader     b User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36
   13 TxHeader     b Accept-Encoding: gzip,deflate,sdch
   13 TxHeader     b Accept-Language: en-US,en;q=0.8
   13 TxHeader     b Cookie: PHPSESSID=b2vl2i3l9i7undm3blm4sqsa90;
   13 TxHeader     b X-Forwarded-Proto: https
   13 TxHeader     b X-SSL-cipher: DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(128) Mac=AEAD
   13 TxHeader     b X-Forwarded-For: 1.2.3.4, 127.0.0.1
   13 TxHeader     b X-Varnish: 1621892887
   13 BackendClose b default
   11 SessionOpen  c 127.0.0.1 59210 :80
   11 ReqStart     c 127.0.0.1 59210 1621892887
   11 RxRequest    c GET
   11 RxURL        c /portal/home
   11 RxProtocol   c HTTP/1.1
   11 RxHeader     c Host: website.com
   11 RxHeader     c Connection: keep-alive
   11 RxHeader     c Cache-Control: max-age=0
   11 RxHeader     c Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
   11 RxHeader     c User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137 Safari/537.36
   11 RxHeader     c Accept-Encoding: gzip,deflate,sdch
   11 RxHeader     c Accept-Language: en-US,en;q=0.8
   11 RxHeader     c Cookie: PHPSESSID=b2vl2i3l9i7undm3blm4sqsa90; 
   11 RxHeader     c X-Forwarded-Proto: https
   11 RxHeader     c X-SSL-cipher: DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH       Au=RSA  Enc=AESGCM(128) Mac=AEAD
   11 RxHeader     c X-Forwarded-For: 1.2.3.4
   11 VCL_call     c recv pass
   11 VCL_call     c hash
   11 Hash         c /portal/home
   11 Hash         c website.com
   11 VCL_return   c hash
   11 VCL_call     c pass pass
   11 Backend      c 13 default default
   11 FetchError   c http read error: -2 0 (Success)
   11 VCL_call     c error deliver
   11 VCL_call     c deliver deliver
   11 TxProtocol   c HTTP/1.1
   11 TxStatus     c 503
   11 TxResponse   c Service Unavailable
   11 TxHeader     c Server: Varnish
   11 TxHeader     c Content-Type: text/html; charset=utf-8
   11 TxHeader     c Retry-After: 5
   11 TxHeader     c Content-Length: 419
   11 TxHeader     c Accept-Ranges: bytes
   11 TxHeader     c Date: Mon, 19 May 2014 00:11:00 GMT
   11 TxHeader     c X-Varnish: 1621892887
   11 TxHeader     c Age: 0
   11 TxHeader     c Via: 1.1 varnish
   11 TxHeader     c Connection: close
   11 Length       c 419
   11 ReqEnd       c 1621892887 1400458260.537350416 1400458260.631304026 0.000104666 0.093891382 0.000062227
   11 SessionClose c error
   11 StatSess     c 127.0.0.1 59210 0 1 1 0 1 0 257 419
    0 CLI          - Rd ping
    0 CLI          - Wr 200 19 PONG 1400458260 1.0
    0 CLI          - Rd ping
    0 CLI          - Wr 200 19 PONG 1400458263 1.0

Любая помощь или предложения относительно того, в чем может быть проблема?

Закончил решение проблемы,

Сначала я проверил лак на наличие ошибок и не нашел их, затем apache и все еще не нашел. В этот момент я решил поиграть с конфигурацией фунта.

Поскольку Apache прослушивает порт 8080, серверная часть конфигурации фунта должна прослушивать порт 8080.

Вот моя новая конфигурация фунта:

ListenHTTPS
    HeadRemove "X-Forwarded-Proto"
    AddHeader "X-Forwarded-Proto: https"
    Address 1.2.3.4 # server public ip
    Port 443
    xHTTP       0
    Cert "/etc/apache2/ssl/website.pem"
    Service
        Backend
            Address 127.0.0.1
            Port 8080
        End
    End
End