Featured image of post Caddy 反代内网 http https

Caddy 反代内网 http https

Caddy 反代内网 http https 一 、Caddy 反代内网 http mkdir -pm 755 /usr/local/caddy/conf.d && touch /usr/local/caddy/conf.d/xunlei.conf && chmod u+x

Caddy 反代内网 http https


一 、Caddy 反代内网 http

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
mkdir -pm 755 /usr/local/caddy/conf.d && touch /usr/local/caddy/conf.d/xunlei.conf && chmod u+x /usr/local/caddy/conf.d/xunlei.conf && cat > /usr/local/caddy/conf.d/xunlei.conf <<'EOF'
https://xunlei.meimolihan.eu.org:6663 {
    encode gzip
    tls ssl/full_chain.pem ssl/private.key
    reverse_proxy http://10.10.10.245:2345  {
        header_up Host {http.reverse_proxy.upstream.hostport} ## http请求头
    }
}
EOF

cd /usr/local/caddy && ./caddy fmt --overwrite && ./caddy reload

二 、Caddy 反代内网 https

测试网址:https://pve.meimolihan.eu.org:6663

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
mkdir -pm 755 /usr/local/caddy/conf.d && touch /usr/local/caddy/conf.d/pve.conf && chmod u+x /usr/local/caddy/conf.d/pve.conf && cat > /usr/local/caddy/conf.d/pve.conf <<'EOF'
# 代理 PVE 虚拟机
https://pve.meimolihan.eu.org:6663 {
    encode gzip
    tls /usr/local/caddy/ssl/full_chain.pem /usr/local/caddy/ssl/private.key
    reverse_proxy https://10.10.10.254:8006 {
        transport http {
            tls_insecure_skip_verify
        }
    }
    # 错误处理
    handle_errors {
        # 将所有错误重定向到50x.html页面
        rewrite * /50x.html
        # 指定错误页面的根目录
        root * /var/www/html
        # 启用文件服务器,用于提供错误页面
        file_server
    }
}
EOF

cd /usr/local/caddy && ./caddy fmt --overwrite && ./caddy reload

三 、Caddy 官方的办法(失败)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
mkdir -pm 755 /usr/local/caddy/conf.d && touch /usr/local/caddy/conf.d/pve.conf && chmod u+x /usr/local/caddy/conf.d/pve.conf && cat > /usr/local/caddy/conf.d/pve.conf <<'EOF'
https://pve.meimolihan.eu.org:6663 {
    encode gzip
    tls /usr/local/caddy/ssl/full_chain.pem /usr/local/caddy/ssl/private.key
    reverse_proxy https://10.10.10.254:8006 {
        header_up Host {upstream_hostport} ## https请求头
    }
}
EOF

cd /usr/local/caddy && ./caddy fmt --overwrite && ./caddy reload

官方解释HTTPS 由于(大多数)标头在代理时保留其原始值,因此在代理到 HTTPS 时通常需要Host使用配置的上游地址覆盖标头,以便Host标头与 TLS ServerName 值匹配:

默认情况下X-Forwarded-Host仍会传递标头,因此如果上游需要知道原始标头值,则可能仍会使用该标头。Host

1
2
3
reverse_proxy https://example.com {
	header_up Host {upstream_hostport}
}
最后更新于 2025-09-28