gpt4 book ai didi

ubuntu - 设置 Varnish Apache2 HTTP & HTTPS Ubuntu 16.04

转载 作者:行者123 更新时间:2023-12-03 17:45:59 25 4
gpt4 key购买 nike

我有 Apache2,在 HTTPS(443,让我们加密)和 HTTP(80)上有几个站点,Ubuntu 16.04 上的多个 CMS,CPUx16,mem=48G。其中一个 HTTPS (Wordpress) 重载 - 一个非营利性网站,显示带有照片/视频的孤儿文件并接收捐款(每天最多 10k 访问者)。如何设置 Varnish 以缓存照片/视频请求以减少磁盘负载?
这里 Apache2 ports.conf :

Listen 80

<IfModule ssl_module>
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>
非常感谢您提供详细的答案。

最佳答案

Apache 端口配置
调整ports.confListen 80进入 Listen 8080 .
在您的虚拟主机中,您必须打开 <VirtualHost *:80>进入 <VirtualHost *:8080>也是。
然后你运行 sudo systemctl restart apache2以确保这些更改生效。
Varnish 设置
请运行sudo systemctl edit --full varnish编辑 Varnish 的运行时设置。
请确保 Varnish 在端口 80 上运行常规 HTTP 和端口 8443 上 PROXY protocol .

ExecStart=/usr/sbin/varnishd -a :80 -a :8443,PROXY -f /etc/varnish/default.vcl -s malloc,20G
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 的障碍
Hitch是由 Varnish Software 开发的 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 准备 Hitch
请创建 /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"
验证后,证书将在 /etc/letsencrypt/live/yourdomain.com/hitch-bundle.pem 上可用, Hitch 将使用它。
请运行 sudo systemctl restart hitch启用搭便车。
LetsEncrypt 更新也可以使用这个二进制文件来完成。更新时,请确保将 Hitch 作为更新后 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"

I use yourdomain.com as the domain in my examples. Please replace it with the actual value.

关于ubuntu - 设置 Varnish Apache2 HTTP & HTTPS Ubuntu 16.04,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63146804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com