Ubuntu 14.04 Apache + SSL 服务器,如何配置 Varnish
Ubuntu 14.04 Apache + SSL server, how to configure Varnish
我在带有 Apache2 和 SSL 的 Ubuntu 14.04 服务器上安装了 Magento 运行。
我已经安装了 Varnish,但不确定如何在不使用 Nginx 的情况下使用 SSL 进行设置。
这是我当前的虚拟主机文件;
<VirtualHost *:443>
ServerName mysite.com
ServerAlias www.mysite.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/mysite.com
<Directory /var/www/mysite.com/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
SSLEngine on
SSLCertificateFile /home/ssl/mysite_com.crt
SSLCertificateKeyFile /home/ssl/mysite.com.key
SSLCACertificateFile /home/ssl/mysite_com.ca-bundle
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName mysite.com
RewriteEngine On
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=permanent]
</VirtualHost>
简而言之,您无法使用 SSL 设置 Varnish,因为 Varnish 不支持它。
您有 2 个选项
在 Varnish 前面设置 Nginx(或其他一些 SSL 终结器)作为反向代理并通过 HTTP 将请求转发到 Varnish。
拆分当前 Apache2 服务器(支持 SSL)和 Varnish 之间的流量。端口 80 上的 HTTP 流量转到 Varnish,端口 443 上的 HTTPS 流量转到 Apache2。
使用您当前的 Apache,我会这样做:
将您的站点配置为侦听另一个端口,例如 8888
<VirtualHost *:8888>
ServerName mysite.com
ServerAlias www.mysite.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/mysite.com
<Directory /var/www/mysite.com/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
</VirtualHost>
然后配置 SSL 代理到 Varnish
<VirtualHost *:443>
# what you had above plus the following:
RequestHeader set X-Forwarded-Proto "https"
ProxyPass / http://localhost:6081/
ProxyPassReverse / http://localhost:6081/
</VirtualHost>
您将需要一些额外的模块:
sudo a2enmod headers proxy proxy_http proxy_html
最后将 Varnish 后端配置为使用端口 8888
backend default {
.host = "127.0.0.1";
.port = "8888";
}
我在带有 Apache2 和 SSL 的 Ubuntu 14.04 服务器上安装了 Magento 运行。 我已经安装了 Varnish,但不确定如何在不使用 Nginx 的情况下使用 SSL 进行设置。 这是我当前的虚拟主机文件;
<VirtualHost *:443>
ServerName mysite.com
ServerAlias www.mysite.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/mysite.com
<Directory /var/www/mysite.com/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
SSLEngine on
SSLCertificateFile /home/ssl/mysite_com.crt
SSLCertificateKeyFile /home/ssl/mysite.com.key
SSLCACertificateFile /home/ssl/mysite_com.ca-bundle
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName mysite.com
RewriteEngine On
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=permanent]
</VirtualHost>
简而言之,您无法使用 SSL 设置 Varnish,因为 Varnish 不支持它。
您有 2 个选项
在 Varnish 前面设置 Nginx(或其他一些 SSL 终结器)作为反向代理并通过 HTTP 将请求转发到 Varnish。
拆分当前 Apache2 服务器(支持 SSL)和 Varnish 之间的流量。端口 80 上的 HTTP 流量转到 Varnish,端口 443 上的 HTTPS 流量转到 Apache2。
使用您当前的 Apache,我会这样做:
将您的站点配置为侦听另一个端口,例如 8888
<VirtualHost *:8888>
ServerName mysite.com
ServerAlias www.mysite.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/mysite.com
<Directory /var/www/mysite.com/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
</Directory>
</VirtualHost>
然后配置 SSL 代理到 Varnish
<VirtualHost *:443>
# what you had above plus the following:
RequestHeader set X-Forwarded-Proto "https"
ProxyPass / http://localhost:6081/
ProxyPassReverse / http://localhost:6081/
</VirtualHost>
您将需要一些额外的模块:
sudo a2enmod headers proxy proxy_http proxy_html
最后将 Varnish 后端配置为使用端口 8888
backend default {
.host = "127.0.0.1";
.port = "8888";
}