У меня есть установка, в которой Nginx и Varnish работают нормально. Несколько веб-сайтов, работающих на одном VPS. Nginx работает на порту 8080.
Я добавил сертификат SSL на один из веб-сайтов, чтобы запустить его по https, но после настройки я получаю эту ошибку при просмотре сайта по https:
Ошибка 503 Служба недоступна
Служба недоступна Медитация гуру:
XID: 613157718
Моя конфигурация nginx для этого сайта (частично):
сервер {
listen 443 ssl;
server_name mydomain.com www.mydomain.com;
root /srv/www/www.mydomain.com;
index index.php index.html index.htm;
ssl_certificate /etc/nginx/ssl/mydomain/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/mydomain/certificate.key;
location / {
proxy_pass http://127.0.0.1:80;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header X-Secure on;
}
}
Есть идеи?
Ура, Jaap
Ваша настройка - Nginx -> Varnish -> Apache, верно?
Ошибка «Медитация гуру» исходит от Varnish, что означает, что запрос выполняется до Varnish, а Varnish - возникли проблемы с обработкой запроса.
Если вы запустите "varnishlog" на сервере, он начнет выводить много информации о каждом запросе. Затем в браузере сделайте https-запрос, а затем, как только вы получите сообщение об ошибке, используйте ctrl-c, чтобы varnishlog не выводил что-либо еще. Прокрутите вывод вверх, и вы должны найти одну или две строки, в которых рассказывается, какая проблема возникла у Varnish при обработке запроса.
Варниш дает мне медитацию Гуру
Сначала найдите соответствующие записи журнала в varnishlog. Это, вероятно, даст вам ключ к разгадке.
Поскольку varnishlog регистрирует много данных, может быть сложно отследить записи.
Вы можете настроить varnishlog для регистрации всех ошибок 503, введя следующую команду:
$ varnishlog -q 'RespStatus == 503' -g request
$ varnishlog -d -q 'RespStatus == 503' -g request
Регулярно вы будете получать 503 ошибки, потому что ваша серверная часть не работает или неисправна. В этом случае varnishlog может вернуть что-то вроде «FetchError c no backend connection». Вы должны проверить порт, к которому Varnish Cache пытается подключиться, исходный сервер и ваши HTTP-сервисы, такие как Apache или Nginx, и посмотреть, все ли это работает правильно - если это не так, вам необходимо устранить неполадки в вашей серверной части. .
Если серверная часть работает, но вы все еще получаете ошибку Varnish Cache 503, значит, что-то не так с подключением вашего веб-сервера к Varnish Cache или конфигурации Varnish Cache.
Если серверная часть отвечает, но Varnish Cache обслуживает 503, мы часто обнаруживаем, что это происходит из-за тайм-аутов. Вы можете изменить или добавить .connect_timeout = Xs и .first_byte_timeout = Xs в раздел VCL бэкэнда по умолчанию для продолжительности тайм-аута, которая работает для вашего веб-сервера.
В программе Varnish Cache есть дополнительная информация о различных тайм-аутах, которые могут возникать в Varnish Cache. Еще один совет - отключить KeepAlive, чтобы неактивные соединения были сброшены. Это будет выглядеть так:
"origin": {
"адрес": "origin.example.com ",
"disable_keepalive": истина
}