Dot-Htaccess
即將推出帶有 Varnish 的頁面:排除 IP 重定向
我嘗試使用 Magento 2 安裝 Varnish Cache。它似乎工作正常(儘管我仍然有一個無記憶體要查找和刪除顯然……)但是我
.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>
這在沒有啟動清漆記憶體的情況下完美執行。使用清漆記憶體,所有人(包括我)都被重定向到我即將推出的頁面。
我試圖設置我的清漆記憶體
.vcl
文件來做同樣的事情,但我有一個錯誤(有我的 IP 和沒有),有一個空白的清漆記憶體頁面和我的 URL 的錯誤 302 程式碼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")); } }
這是正確的方法嗎?
Varnish在你的應用伺服器前面 被實現為一個反向代理
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 都附加在末尾。