當我在 ubuntu 20.04 服務器上安裝 Varnish 版本 7.0.2 和掛接 1.7.0 時,CSS 沒有加載。
當我停止 Varnish 時,它加載正常。
也嘗試繞過站點,但問題仍然存在:
sub vcl_recv {
if (req.http.host ~ "(www\.)?(example)\.com") {
return(pass);
}
}
注意: VCL 檔案沒有任何變化。
請幫我解決這個問題。
uj5u.com熱心網友回復:
CSS 可能無法加載的原因之一是內容混合。請檢查您的靜態資產是否通過 HTTP 加載,而頁面是否通過 HTTPS 加載。
如果是這種情況,您需要確保您的應用程式知道終止的協議。注冊X-Forwarded-Proto標頭是實作此目的的一種方法。
使用代理協議
如https://www.varnish-software.com/developers/tutorials/terminate-tls-varnish-hitch/#retrieve-tls-information-with-vmod_proxy中所述,如果Hitch 和 Varnish 之間的通信發生在 PROXY v2 上protocol,您可以使用它vmod_proxy來提取 TLS 資訊并設定X-Forwarded-Proto標頭。
這將是 VCL 代碼:
vcl 4.1;
import proxy;
backend default {
.host = "127.0.0.1";
.port = "8080";
}
sub vcl_recv {
if(!req.http.X-Forwarded-Proto) {
if (proxy.is_ssl()) {
set req.http.X-Forwarded-Proto = "https";
} else {
set req.http.X-Forwarded-Proto = "http";
}
}
}
確保在您的應用程式中支持 X-Forwarded-Proto
X-Forwarded-Proto應該支持將發送到您的源應用程式的請求標頭。這意味著您的應用程式應該知道如何檢查該標頭。
該值將是http或https。根據標頭的值,您的應用程式可以使用一致的請求方案生成 URL。這將防止加載混合內容。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/426314.html
