Magento 2完全SSL与光油

最近在Magebit,我们的客户访问量很大,在其新建的Magento 2网站上加载时间只有几秒钟。 没有很多可以缓存的部分。 客户不满意没有人为他安装Varnish,因为它不支持完整的SSL站点。

那是不对的! 您可以在完整的SSL Magento 2网站上使用Varnish。

我没有找到任何与此相关的解释性文章,所以我写了一篇。 希望它可以帮助您了解为什么需要代理Web服务器,以及如何使Varnish与所有通过SSL安全提供所有页面的网站一起使用。

虽然Varnish不直接支持SSL,但可以使用以nginx作为代理的强大的Varnish缓存功能。 在下面,您可以查看完整的SSL Magento 2网站的Nginx和Varnish设置的概述。

Magento 2默认情况下支持Varnish,不需要其他模块。 您只需要一个可以充当代理的网络服务器和一个将连接到Magento的Varnish。 我们使用了Nginx Web服务器。

让我们更深入地进行上述步骤。

1.访客前往您的网站

当访问者通过SSL(使用https://)通过SSL连接到您的网站时,请求将发送到nginx Web服务器。 Nginx Web服务器充当代理,并将请求传递给Varnish。 如果访问者在没有SSL的情况下进行连接,则可以通过Varnish将其重定向到SSL网址。

2.请求去清漆

现在,Varnish将检查请求是否具有缓存(通常称为Varnish HIT或MISS)。 如果请求数据不在Varnish缓存中,则该请求会进一步发送到Magento 2以获取响应数据。 如果已缓存,则Varnish会将缓存的数据传递给nginx,而无需向Magento提出请求。

3.将数据传递回nginx

这很简单。 Varnish收到响应后,它将被传递回nginx,以便可以将其传递给访问者。 这是必需的,因为Varnish不直接支持SSL。 这就是nginx需要介于两者之间的原因,以便它可以通过SSL将响应传递给访问者。

4.向访客传达回应

同样,这里非常简单。 nginx获得响应数据后,只需将其通过SSL安全地传递给访问者,因为不会为安全SSL响应创建Varnish。

组态

如果您是开发人员或仅对我们用于上述解决方案的配置感兴趣,请在此处进行配置(但针对本文进行了修改,在我们对其进行设置的生产环境中,配置要复杂得多)。

清漆启动选项:

DAEMON_OPTS="-a :80 \ 
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-s malloc,1024m"

清漆default.vcl应该从Magento 2管理面板中导出。

非SSL的Nginx配置:

 服务器{ 
server_name example.com;
听8080;
设置$ MAGE_ROOT / var / www;
设置$ MAGE_MODE生产;
 包括/var/www/nginx.conf.sample; 
}

SSL的Nginx配置:

 服务器{ 
server_name example.com;
监听443 SSL http2;
ssl_certificate ....;
ssl_certificate_key ....;
 位置 / { 
proxy_pass http://127.0.0.1;
proxy_set_header主机$ http_host;
proxy_set_header X转发的主机$ http_host;
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 https;
proxy_set_header X-Forwarded-Port 443;
}
}

确保已在Magento管理面板中启用了Varnish作为整页缓存选项,并享受快速的访问权限。

需要帮忙? 随时通过info@magebit.com与我们的24/7 Magento支持团队联系,并邀请他人使用nginx设置Varnish作为您的代理。