讓Nginx v1.27.0支援HTTP/2和HTTP/3
大家好,我是無能。
東京的房子好不容易找到一次,結果又回到原點,最近總覺得好像又找到不錯的物件了。最糟的情況,就隨便找個合租屋住進去吧。
最近在現在的公司,同一個專案的成員說要幫我辦歡送會,讓我覺得很感激。
我深深覺得自己的人生遇到很多好人。
話說回來,前陣子我向Deno提交了Pull Request,他們設定了里程碑,所以我可以不慌不忙地追蹤原始碼。Deno的Rust程式碼不知不覺間已經變得非常龐大,即使是微不足道的功能,也要盡可能減少變動,因為說明書就像原始碼一樣,所以只能多方嘗試了。
如果行不通,到時候再說吧。
讓Nginx支援HTTP/2和HTTP/3
讀到PHP開發者拉斯姆斯·勒多夫的採訪文章時,看到他說對HTTP/2感到未來可期,我就想『咦,我的Nginx伺服器怎麼樣了呢?』,於是決定嘗試支援它。
看來Nginx支援HTTP/3是從v1.25以後,所以先確認版本。
# nginx -v
nginx version: nginx/1.27.0
看來是支援的。
我的Nginx不是透過pkg安裝的,而是自己編譯的,所以在相同的FreeBSD環境下可能會有差異。
先不考慮複雜的事情,姑且讓它支援看看。
寫入conf檔案
因為只是作為反向代理伺服器運行的Nginx,所以就快速進行吧。
server {
listen 443 ssl;
listen 443 quic reuseport;
listen [::]:443 quic reuseport;
http2 on;
http3 on;
server_name soulminingrig.com www.soulminingrig.com;
總覺得HTTP/3好像是Google正在推動的,而QUIC協定本身好像也是Google開發的。
在標頭資訊中追加以下內容
add_header Alt-Svc 'h3=":443"; ma=86400';
add_header X-Content-Type-Options nosniff;
然後,用nginx -t進行測試,如果沒有問題就重新啟動。
因為我是以root使用者身份操作,所以執行以下指令。
service nginx restart
然後,QUIC本身似乎使用443/UDP,所以好像需要開放這個連接埠...
第三章 詳解HTTP/3 ~ 如何活用QUIC,如何實現高速化
目前許多實作預設都使用UDP的443號連接埠。
如上所述
add_header Alt-Svc 'h3=":443"; ma=86400';
設定的是443號連接埠,所以開放443號連接埠,如果需要更改,開放其他連接埠應該就可以了。
vim /etc/pf.conf
然後追加以下內容
set skip on lo
exsrv1 = 167.179.75.206
~~~
# HTTP/3 Protocol
pass in inet proto udp from any to $exsrv1 port 443
然後用-nf選項測試,再用-f應用。
pfctl -nf /etc/pf.conf
pfctl -f /etc/pf.conf
有正確應用嗎?
雖然也有用Curl確認是否應用成功的方法,但通常這種時候從與自己網路無關的地方確認會比較好驗證,所以我在瀏覽器上確認。
HTTP/3 檢查

嗯,成功了!
雖然也有人設定得更詳細,但我認為目前這樣就可以了。
那麼,下次再見了。