2015-01-13 3 views
0

Я пытаюсь использовать Varnish и Nginx на сайте WP с использованием HTTPS.Переадресованный цикл при использовании Varnish + Nginx (HTTPS)

Все работает отлично с кэшированными файлами, но когда Varnish обнаруживает что-то, что он не должен кэшировать, он отправляет его обратно в Nginx. На этом этапе Nginx отправляет запрос HTTPS на лак, снова вызывая бесконечный цикл.

Я пробовал много вещей и много раз искал через Интернет, но до сих пор ничего не работало.

Это пример чего-то Varnish посылает обратно:

if (req.url ~ "/wp-(login|admin|cron)") { 
     # Don't cache, pass to backend 
     return (pass); 
} 

И это место блок Nginx, который имеет дело с 433:

location/{ 
    # Send request to varnish 
    proxy_pass http://127.0.0.1:8888; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_set_header X-Forwarded-Port 443; 
    proxy_set_header Host $host; 
} 

Я думаю, что лак посылает с return(pass) данные вернулись к Nginx, но я не сейчас, как визуализировать эти данные с использованием другого блока местоположения.

Как я могу поймать в Nginx запрос, который поступает из лака, и различать это и запросы, поступающие из обычного 433-порта?

Заранее благодарен!

ответ

1

Я нашел проблему: HHVM.

Я создал еще один бэкенд без HHVM на Nginx (порт 9433) и сделал следующее Varnish:

backend no_hhvm { 
    .host = "127.0.0.1"; 
    .port = "9433"; 
} 

А потом ...

# Either the admin pages or the login 
if (req.url ~ "/wp-(login|admin|cron)") { 
     # Don't cache, pass to backend 
     set req.backend = no_hhvm; 
     return (pass); 
} 

Итак, когда страница не кэшированы его идет к порту 9433, который не использует HHVM.

Работайте отлично.

1

Возможно, это вызвано hhvm, ожидающим запроса по порту 443 (https), что приведет к переадресации на https, который снова заканчивается лаком.

Смежные вопросы