DirectAdmin 面板預設尚未在介面提供 HTTP/2 啟用選項,但其 custombuild 架構已內建 nghttp2 支援。本文記錄在 DirectAdmin 環境下,透過自編譯 OpenSSL 1.0.2+(支援 ALPN)並重新編譯 Apache 以啟用 HTTP/2 的完整步驟。
custombuild 版本 2.0+。gcc、make、perl 等)。cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.0.2u.tar.gz # 建議使用 1.0.2 系列最新版
tar xzf openssl-1.0.2u.tar.gz
cd openssl-1.0.2u
./config --prefix=/usr/local/lib_http2 no-ssl2 no-ssl3 zlib-dynamic
make depend
make install
注意:安裝到 /usr/local/lib_http2 避免污染系統預設 OpenSSL。
cd /usr/local/directadmin/custombuild
./build update
./build nghttp2
cd /usr/local/directadmin/custombuild
mkdir -p custom/ap2
cp -p configure/ap2/configure.apache custom/ap2/configure.apache
找到原有 SSL 路徑行:
"--with-ssl=/usr" \
替換為:
"--enable-http2" \
"--enable-ssl-staticlib-deps" \
"--with-ssl=/usr/local/lib_http2" \
./build apache
編譯過程約 5-15 分鐘,視 CPU 核心數而定。
echo 'ProtocolsHonorOrder On' >> /etc/httpd/conf/extra/httpd-includes.conf
echo 'Protocols h2 h2c http/1.1' >> /etc/httpd/conf/extra/httpd-includes.conf
cd /usr/local/directadmin/custombuild
./build rewrite_confs
systemctl restart httpd
curl -I --http2 https://your.domain/ 應回傳 HTTP/2 200;瀏覽器開發者工具 Network 標籤顯示 h2。*.example.com)部署多子域名時,第二個子域名會連線失敗。此為 Apache 核心 Bug,升級至 2.4.38+ 或改用獨立憑證可規避。若前端使用 Nginx 反代 Apache,只需在 Nginx 啟用 HTTP/2(listen 443 ssl http2;),後端 Apache 保持 HTTP/1.1 即可,效能損耗極小且配置更簡單。