Nginx-quicを試す!!

サーバーエンジニア

今日はNginxのQUICを試してみたいと思います。

NginxがQUICの云云の記事をだしたのが今年の6月です。
しかし、NginxでWordPress。正確にはPHPを動かそうとした場合は500エラーになってしまいました。
今回このエラーが解消されたため、改めて構築方法を載せたいともいます。

まず初めに『QUIC』や『HTTP/3』とはなんでしょうか?

『HTTP/2』をご存知の方は沢山いると思います。ちょっと『HTTP/2』を復習してみましょう。
WEBサイトが生まれた初期のころはサイトのコンテンツが少なかったため、
サーバーへのリスクエスト数が少なかったんです。

しかし、年々サイトへのリクエスト数が増加傾向にあり
『HTTP1.1』だとリクエスト数に限界があるため、サイト表示が遅くなることがありました。

そこで無限のリクエストを可能とする『HTTP/2』が2015年に登場。
今やほとんどのサイトが『HTTP/2』を使ってるはずです。

ところが・・・。

リクエスト数の問題が解決できたと思ったら、
実はトランスポート層という場所で『HTTP1.1』の問題がおきていました。
これを解決する方法が『HTTP/3』と『QUIC』というわけです。

現在はドラフト32。yukiさんによると年内にはRFCになる可能性もあるそうです。

yukiさんを軽く紹介しておきます。

別名、「MRドラフト」。Tera Termの平田さんくらいの著名な方だと思います。

さて、こちらを参考にして

https://hg.nginx.org/nginx-quic/file/6e84524886d4/README

構築を始めていきたいと思います。

1,boringsslのインストール

# cd /usr/local/src
# git clone https://boringssl.googlesource.com/boringssl
# cd boringssl && mkdir build && cd build && cmake .. && make

2 hgコマンドのインストール

# yum install hg

3 Nginxのビルド
#hg clone -b quic https://hg.nginx.org/nginx-quic && cd nginx-quic/
#./auto/configure --prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib64/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--user=nginx --group=nginx --with-compat \
--with-file-aio \
--with-threads \
--with-http_addition_module \
--with-http_auth_request_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_mp4_module \
--with-http_random_index_module \
--with-http_realip_module \
--with-http_secure_link_module \
--with-http_slice_module \
--with-http_stub_status_module \
--with-http_sub_module \
--with-mail \
--with-mail_ssl_module \
--with-stream \
--add-module=/usr/local/src/nginx-ct \
--add-module=/usr/local/src/ngx_brotli \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_v3_module \
--with-http_quic_module \
--with-cc-opt='-I../boringssl/include -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fPIC' \
--with-ld-opt='-Wl,-z,relro -Wl,-z,now -no-pie' \
--with-debug \
--with-ld-opt="-L../boringssl/build/ssl -L../boringssl/build/crypto"

# make && make install

後はconfファイルを編集して

4 最後にブラウザを確認すると!!

h3-29となっています。

これはHTTP/3のドラフト29という意味ですね。

ではまた!!

そのうちCentOS8の構築記録も載せます!!

コメント