DEV Community

Cover image for Implementasi HTTP3 QUIC di Nginx
MHernawan
MHernawan

Posted on

Implementasi HTTP3 QUIC di Nginx

Saya sangat terinspirasi oleh berita bahwa protokol HTTP3 sudah tersedia dan sekarang kita bisa menggunakannya. Saya menghadapi beberapa masalah selama implementasi dan akan mencoba berbagi informasi proses ini untuk Anda.

Pada artikel ini, saya akan menunjukkan apa yang diperlukan untuk mengatur dukungan HTTP 3 Nginx.

HTTP3 QUIC (Quick UDP Internet Connections) protokol dari Google, TCP + TLS + HTTP/2 diimplementasikan pada UDP.

Pada bulan Maret 2020, dukungan HTTP3 sedang dalam pengembangan di Nginx dan diharapkan dalam rilis 1.17 namun sampai sekarang 1.19 belum ada berita lebih lanjut. Ada cara untuk memilikinya hari ini yaitu dengan mengkompilasi Nginx dengan modul QUIC. Anda dapat melakukan ini dengan mengikuti manual dari Cloudflare / quiche repo atau menggunakan docker dengan Nginx + quic yang telah dikompilasi.

Nah, saya menggunakan docker dari ymuski. Nginx dikompilasi dengan semua modul yang masuk dalam gambar docker Nginx resmi + modul borringssl dan http3.

Apa yang dibutuhkan?

  • Sertifikat TLS
  • Konfigurasi nginx
  • Docker container

Terbitkan sertifikat untuk domain Anda:
certbot certonly --standalone --non-interactive --agree-tos -d your.domain.com -m your@email.com

Buat konfigurasi Nginx (contoh lengkap):

# Enable QUIC and HTTP/3.
listen 443 quic reuseport;
# Request buffering in not currently supported for HTTP/3.
proxy_request_buffering off;

# Add Alt-Svc header to negotiate HTTP/3.
add_header alt-svc 'h3-27=":443"; ma=86400';
ssl_protocols TLSv1.3;

Jalankan docker container:

docker run --name nginx -d -p 80:80 -p 443:443/tcp -p 443:443/udp -v /etc/letsencrypt/:/opt/nginx/certs/ -v /opt/nginx/conf/example.nginx.conf:/etc/nginx/nginx.conf ymuski/nginx-quic

Ayo kita coba!

CATATAN: Jika Anda menjalankan server cloud dan memiliki keamanan, kemungkinan besar HTTP3 tidak akan berfungsi - buka port 443/udp dalam pengaturan firewall.

Bagaimana cara menguji HTTP3?

Dukungan HTTP3 QUIC adalah berupa fitur yang harus diaktifkan terlebih dahulu, jadi Anda harus mengaktifkannya.
Chrome (>79) go to chrome://flags/#enable-quic
Firefox (> 72) go to about:config => network.http.http3.enabled
Masuk ke developer console (F12) => Network and check protocol.

Kelebihan HTTP3

HTTP3 bermanfaat dalam kasus-kasus berikut:
Handshake lebih cepat (1 atau 0-RTT)
Tidak ada pemblokiran head-of-line
Peralihan jaringan tidak akan memengaruhi koneksi (Streaming)
Tes curl saya sendiri antara HTTP2 dan HTTP3 menunjukkan 30% latency bust.

Top comments (0)