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

Скоро появится страница с Varnish: исключить перенаправление по IP

Я пытался установить Varnish Cache с Magento 2. Кажется, он работает нормально (хотя у меня все еще нет кеша для поиска и удаления, по-видимому ...), но мой .htaccess перенаправление для моей страницы «скоро» больше не работает.

У меня стандартный .htaccess код для перенаправления других пользователей (кроме меня) на мою страницу, которая скоро появится:

 # MAINTENANCE-PAGE REDIRECT
<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{REMOTE_ADDR} !^xx\.xxx\.xxx\.xxx
 RewriteCond %{REMOTE_ADDR} !^xx\.xxx\.xxx\.xxx
 RewriteCond %{REMOTE_ADDR} !^xx\.xxx\.xxx\.xx
 RewriteCond %{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx
# RewriteCond %{REQUEST_URI} !coming/soon.html$ [NC]
 RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif|css|js|svg|eot|woff|woff2|php) [NC]
 RewriteCond %{REQUEST_URI} !^/coming/soon\.html$
RewriteRule ^(.*)$ https://example.com/coming/soon.html [R=302,L]
</IfModule>

Это отлично работает без активированного Varnish Cache. С помощью Varnish Cache все люди (в том числе и я) перенаправляются на мою страницу, которая скоро появится.

Я пытался установить свой кеш лака .vcl файл, чтобы сделать то же самое, но у меня есть ошибка (с моим IP и без), с пустой страницей кэша лака и кодом ошибки 302 с моим URL https://www.example.com/coming/soon.html :

acl nosip {
    "xx.xxx.xxx.xxx";
    "xx.xxx.xx.xxx";
    "xx.xxx.xxx.xx";
    "xxx.xxx.xxx.xxx";
}


sub vcl_recv {

    # Methode ip exclusion 
    if (client.ip !~ nosip) {
    return (synth(302, "https://www.example.com/coming/soon.html"));
    }
}

Это правильный способ сделать это?

Лак выполнен в виде обратный прокси перед сервером приложений, поэтому REMOTE_ADDR серверная переменная (когда она попадает на ваш сервер приложений), скорее всего, будет IP-адресом этого прокси-сервера, а не исходным IP-адресом клиента.

Предполагая, что Varnish устанавливает соответствующий X-Forwarded-.... заголовки запросов, тогда вам, вероятно, нужно будет проверить X-Forwarded-For Вместо этого заголовок HTTP-запроса. Например:

RewriteCond %{HTTP:X-Forwarded-For} !^xx\.xxx\.xxx\.xxx

Обратите внимание, что X-Forwarded-For Заголовок потенциально представляет собой строку IP-адресов, разделенных запятыми. IP-адрес каждого прокси-сервера, который проходит через него, добавляется в конец.