Pythontr

husonet | Tarih: 22.07.2022

Nginix Brotli ve HTTP3 kurulumu

Nginx'in son versiyonu üzerinde brotli ve HTTP3 kurulumu.

Bu yazımda NGINX 1.23 versionu üzerine Brotli ve yeni protokol olan HTTP3 kurulumunu yapacağız ve bunlar nedir gibi sorularımıza cevap yazacağız.


Brotli Nedir?

Brotli gzip ten ortalama yuzde 17 oranında daha verimli bir sıkıştırma aracıdır. Özellikle statik dosyalarımız için faydalı olacaktır. Sitemiz size olarak küçüleceği için performans değerlerimiz artacaktır. Google tarafından geliştirilmiştir.


HTTP3 Nedir?

HTTP3 tcp yerine udp protokollerini kullanarak web sunucumuzun "Nginx" clientler ile haberleşmesini sağlayan ve hala geliştirilmesi devam eden bir yeni heyecan verici bir protokoldur.


Son olarak, kuruluma başlamadan önce kullandığım işletim sistemi ve neden Nginx 1.23 üzerinde bu çalışmayı yapmaya karar verdiğimden kısaca bahsedeyim, biliyorsunuzki Nginx 1.19 versionu son open source versiyonu diyebiliriz. Bu versiyondan sonra 1.2x olarak devam etmeye karar verdi bu versionda free ama bir çok eklentiyi eklemek eskisi gibi basit değil. Bu kurulum yapacağımız modüllerde bunlardan bazıları.


brotli kurulumu
su -
mkdir /root/Download
cd /root/Download/
git clone --recursive https://github.com/google/ngx_brotli.git

boringssl kurulumu
su -
cd /root/Download/
apt-get update
apt-get install -y git gcc make g++ cmake perl libunwind-dev golang
git clone https://boringssl.googlesource.com/boringssl
mkdir -p boringssl/build
cd boringssl/build
cmake ..
make


HTTP3 Quic için gereksinimlerin kurulması
apt-get install -y mercurial libperl-dev libpcre3-dev zlib1g-dev libxslt1-dev libgd-ocaml-dev libgeoip-dev
hg clone https://hg.nginx.org/nginx-quic
#hg clone http://hg.nginx.org/njs -r "0.7.6"
hg clone http://hg.nginx.org/njs
cd nginx-quic
hg update quic
auto/configure `nginx -V 2>&1 | sed "s/ \-\-/ \\\ \n\t--/g" | grep "\-\-" | grep -ve opt= -e param= -e build=` --build=nginx-quic --with-debug --with-http_v3_module --with-stream_quic_module --with-http_image_filter_module --with-http_geoip_module --with-stream_geoip_module --add-module=/root/Download/ngx_brotli --add-module=/root/Download/njs/nginx --with-cc-opt="-I../boringssl/include" --with-ld-opt="-L../boringssl/build/ssl -L../boringssl/build/crypto" && make
cp objs/nginx /usr/sbin/nginx




brotli için nginx konfigürasyonu
vim /etc/nginx/nginx.conf
brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types text/plain text/css application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon image/vnd.microsoft.icon image/png image/gif image/webp image/jpeg image/bmp image/svg+xml;

nginx için HTTP3 konfigürasyonu
vim /etc/nginx/sites-available/www.conf
listen 443 http3 reuseport;
# 0-RTT QUIC connection resumption
ssl_early_data on;
# Add Alt-Svc header to negotiate HTTP/3.
add_header alt-svc 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"';
# Sent when QUIC was used
add_header QUIC-Status $http3;