[nginx-quic] HTTP/3(QUIC): I can't test HTTP/3 with nginx-quic repo
Andrey Khramov
andrey at apporto.com
Tue Feb 2 14:30:04 UTC 2021
Hello, there
I tried to test the HTTP/3 (QUIC) with nginx-quic in several days.
But I couldn't test HTTP/3 (QUIC).
I built the quic branch of nginx-quic repo according to README of that repo.
The configuration options follows as below:
$ ./auto/configure --prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-debug \
--with-http_v2_module --with-http_ssl_module \
--with-http_v3_module --with-http_quic_module \
--with-stream_quic_module \
--with-cc-opt="-I../boringssl/include" \
--with-ld-opt="-L../boringssl/build/ssl \
-L../boringssl/build/crypto"
$ make
To install the nginx-quic, I installed the nginx 1.19.6 package on Ubuntu
18.04 and replaced the nginx binary with the nginx-quic:
$ sudo cp objs/nginx /usr/sbin/
I configured that the nginx-quic works as load-balancer of HTTPS:
HTTPS -> nginx-quic (7443 port) -> Apache2 (80 port) -> Apache Tomcat (8080
port)
The configuration file (nginx.conf) follows as below:
user nginx;
worker_processes auto;
events {
worker_connections 1024;
}
http {
log_format quic '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$quic" "$http3"';
access_log /var/log/nginx/access.log quic;
error_log /var/log/nginx/error.log debug;
server {
listen 7443 http3 reuseport; # Enable HTTP/3.
listen 7443 ssl; # Enable HTTP/1.1 (optional).
ssl_certificate
/home/ubuntu/andrey/http3/example-fullchain.pem;
ssl_certificate_key /etc/ssl/private/example.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
location / {
add_header alt-svc '$http3=":7443"; ma=86400'; # Advertise that
QUIC is available
add_header QUIC-Status $quic; # Sent when QUIC was used
proxy_pass http://backend1;
}
}
server {
listen 8443 ssl http2;
ssl_certificate
/home/ubuntu/andrey/http3/example-fullchain.pem;
ssl_certificate_key /etc/ssl/private/example.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
proxy_pass http://backend2;
}
}
upstream backend1 {
ip_hash;
server localhost max_fails=3 fail_timeout=30s;
}
upstream backend2 {
ip_hash;
server localhost max_fails=3 fail_timeout=30s;
}
}
I opened UDP 7443 port on the cloud server (AWS).
I tested HTTP/3 (QUIC) with the client tools (neqo-client, curl-http3) and
the browsers (Firefox 85 and Chrome 88) according to
https://quic.nginx.org/readme.html.
I got the right result with the client tools, but I didn't get the right
result with the browsers.
When connecting 7443 port with the browsers, I get the HTTP/1.1 now.
When connecting 8443 port with the browsers, I get the HTTP/2 now.
I hope any suggestions and help.
Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20210202/ad56077d/attachment.htm>
More information about the nginx-devel
mailing list