设置Varnish Apache2 HTTP&;HTTPS Ubuntu 16.04

设置Varnish Apache2 HTTP&;HTTPS Ubuntu 16.04,ubuntu,ssl,https,varnish,Ubuntu,Ssl,Https,Varnish,我有Apache2,在HTTPS(443,让我们加密)和HTTP(80)上有几个站点,在Ubuntu 16.04上有多个CMS,CPUx16,mem=48G。其中一个HTTPS(Wordpress)超负荷运行——这是一个非营利性网站,通过照片/视频显示孤儿的个人资料,并接受捐赠(每天访问量高达1万人次)。如何为缓存到内存的照片/视频请求设置清漆以减少磁盘负载? 这里是Apache2ports.conf: Listen 80 <IfModule ssl_module> Lis

我有Apache2,在HTTPS(443,让我们加密)和HTTP(80)上有几个站点,在Ubuntu 16.04上有多个CMS,CPUx16,mem=48G。其中一个HTTPS(Wordpress)超负荷运行——这是一个非营利性网站,通过照片/视频显示孤儿的个人资料,并接受捐赠(每天访问量高达1万人次)。如何为缓存到内存的照片/视频请求设置清漆以减少磁盘负载?
这里是Apache2
ports.conf

Listen 80

<IfModule ssl_module>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>
听80
听我说
听我说
如果您能提供详细的回答,我将不胜感激。

Apache端口配置 调整
ports.conf
并将
Listen 80
转换为
Listen 8080

在vhost中,您还必须将
转换为

然后运行
sudo systemctl restart apache2
以确保这些更改生效

清漆装置 请运行
sudo systemctl edit--full varnish
编辑varnish的运行时设置

请确保Varnish在常规HTTP的端口80和常规HTTP的端口8443上运行

VCL设置 请创建
/etc/varnish/letsencrypt.vcl
,并添加以下代码:

vcl 4.0;

backend certbot {
    .host = "127.0.0.1";
    .port = "8081";
}

sub vcl_recv {
    if (req.url ~ "^/\.well-known/acme-challenge/") {
        set req.backend_hint = certbot;
        return(pipe);
    }
}

sub vcl_pipe {
    if (req.backend_hint == certbot) {
        set req.http.Connection = "close";
        return(pipe);
    }
}
请在
vcl 4.0之后直接包含此文件在您的常规
/etc/varnish/default.vcl
中。下面是一个例子:

vcl 4.0;
include "/etc/varnish/letsencrypt.vcl";

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}
如您所见,
default.vcl
中的后端指向端口8080,即Apache

请重新启动Varnish以确保这些VCL设置处于活动状态

TLS终端用挂接装置 是由Varnish软件开发的TLS代理。它功能强大,重量轻,可配置

请运行以下命令进行安装:

sudo apt-get install -y hitch
sudo systemctl enable hitch
然后创建
/etc/hitch/hitch.conf
,并添加以下内容:

frontend = "[*]:443"
backend = "[localhost]:8443"
write-proxy-v2 = on
pem-file = "/etc/letsencrypt/live/yourdomain.com/hitch-bundle.pem"
ciphers = "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
tls = on
ssl = off
prefer-server-ciphers = false
为LetsEncrypt准备挂接装置 请创建
/usr/local/bin/hitch deploy hook
,并将以下内容放入其中:

#!/bin/bash
# Full path to pre-generated Diffie Hellman Parameters file
dhparams=/etc/hitch/dhparams.pem

if [[ "${RENEWED_LINEAGE}" == "" ]]; then
    echo "Error: missing RENEWED_LINEAGE env variable." >&2
    exit 1
fi

umask 077
cat ${RENEWED_LINEAGE}/privkey.pem \
${RENEWED_LINEAGE}/fullchain.pem \
${dhparams} > ${RENEWED_LINEAGE}/hitch-bundle.pem
然后运行以下命令:

sudo chmod a+x /usr/local/bin/hitch-deploy-hook
openssl dhparam 2048 | sudo tee /etc/hitch/dhparams.pem
运行Cerbot 通过运行以下命令,确保已安装LetsEncrypt cerbot:

sudo apt-get install -y certbot
然后运行以下命令安装证书:

sudo certbot certonly --standalone --preferred-challenges http \
--http-01-port 8081 -d yourdomain.com \
--deploy-hook="/usr/local/bin/hitch-deploy-hook"
验证后,证书将在hitch将使用的
/etc/letsencrypt/live/yourdomain.com/hitch bundle.pem
上提供

请运行
sudo systemctl restart hitch
以启用挂接装置

LetsEncrypt更新也可以使用此二进制文件完成。续订时,请确保将挂接装置重新加载为续订后挂钩:

在我的示例中,我使用
yourdomain.com
作为域。请用实际值替换它


网站更新后不启动。所有https均不工作:“页面未正确重定向”运行“openssl dhparam 2048 | sudo tee/etc/hitch/dhparams.pem”时出现警告消息:无法写入“随机状态”。然而,这个过程以BEGIN/END DH参数和一些编码文本结束。指令中的所有命令都成功运行。Letsencript成功续订两次(每次我选择“续订并替换证书”)。但在更新之后,所有站点都没有正确加载。现在我已经切换到旧的配置和pem键,这对我来说是一个很难调试的配置。但事实上,你得到“页面没有正确重定向”,这意味着TLS终止是成功的。有一件事可能会导致问题,那就是代理协议没有正确地在清漆上。在给你提供建议之前,我需要更多的信息和更好的问题可视化。嗨,谢谢你的演练,但我想再问一个问题-如何设置多个域?apache上的虚拟主机(我有),如何为Hitch创建PEM文件?它只是将所有ssl文件合并成一个文件吗?否则呢?
sudo certbot certonly --standalone --preferred-challenges http \
--http-01-port 8081 -d yourdomain.com \
--deploy-hook="/usr/local/bin/hitch-deploy-hook"
sudo certbot certonly --standalone --preferred-challenges http \
--http-01-port 8081 -d yourdomain.com \
--deploy-hook="/usr/local/bin/hitch-deploy-hook" \
--post-hook="systemctl reload hitch"