nginx-quicパッケージをquictlsで作り直した

以前作成したnginx-quicパッケージをquictls版OpenSSLを使うように作り直しました。https://github.com/ryoh/nginx-quic.spec

ryoh-k.hateblo.jp

基本的なコードなどは変わりませんが、以前はBoringSSLでしか対応ができなかったのが、quictls版OpenSSLでも対応できるようになったため、cmakeが必要なくなりビルドが容易になりました。(併せてnginxも最新版に更新)

またOpenSSL 3.0に変えたため kTLS(Kernel TLS)が使えるようになりました。最大で30%程度性能改善がするようです。nginx.conf 周りも更新しているので一応そのまま使えれる状態にしています。

www.nginx.co.jp

そのほかzstdモジュールにも対応してほしいissueが来ていたので対応しています。が、どうなんでしょうかね。

最後にSPECファイルの抜粋となります。 ビルド方法はOpenSSLをスタティックリンクする方法と同じで違いは特にありません。 nginx-quicのビルドオプションもそのまま使用できます。

%global         nginx_quic_commit   cd8018bc81a5
%global         quictls_version     3.0.2

Name:           nginx-quic
Version:        1.21.6
Release:        4%{?dist}.quictls%{quictls_version}
Summary:        A high performance web server and reverse proxy
Group:          System Environment/Daemons 
License:        BSD
URL:            https://nginx.org/
Source0:        https://hg.nginx.org/nginx-quic/archive/%{nginx_quic_commit}.tar.gz#/nginx-quic-%{nginx_quic_commit}.tar.gz
Source100:      https://github.com/quictls/openssl/archive/openssl-%{quictls_version}+quic.tar.gz

%description
nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server,
and a generic TCP/UDP proxy server, originally written by Igor Sysoev.

%prep
%setup -q -n %{name}-%{nginx_quic_commit}

pushd ..
MODULE="quictls"
%{__rm} -rf ${MODULE}
%{__mkdir} ${MODULE}
cd ${MODULE}
%{__tar} -xf %{SOURCE100} --strip 1
popd

%build
./auto/configure \
  --with-debug \
  --with-openssl=../quictls \
  --with-openssl-opt="enable-ktls" \
  --with-http_v3_module \
  --with-stream_quic_module \

%make_build

%install
[[ -d %{buildroot} ]] && rm -rf "%{buildroot}"
%{__mkdir} -p "%{buildroot}"
%make_install INSTALLDIRS=vendor

unlink %{buildroot}/etc/nginx/koi-utf
unlink %{buildroot}/etc/nginx/koi-win
unlink %{buildroot}/etc/nginx/win-utf

%files
%defattr(-,root,root)
/usr/sbin/nginx
%config(noreplace) /etc/nginx/nginx.conf
%config(noreplace) /etc/nginx/mime.types
%config(noreplace) /etc/nginx/fastcgi_params
%config(noreplace) /etc/nginx/scgi_params
%config(noreplace) /etc/nginx/uwsgi_params

%changelog

RPMパッケージは以前と同じCoprで公開中です。https://copr.fedorainfracloud.org/coprs/ryoh/nginx-quic/