[英]how to disable responding to http1 requests in nginx or apache or caddy?
我有一個http2服務器,但默認情況下它會響應http1請求。
我想停止我的服務器響應http1請求嗎?
大多數瀏覽器可能使用alpn或npn。 是否可以僅刊登http2廣告? 還是應用程序協議的自定義列表?
在Caddy中,如果您願意修改源代碼,則可以在caddyhttp/httpserver/server.go
進行以下更改。
更改以下行:
var defaultALPN = []string{"h2", "http/1.1"}
…這樣說:
var defaultALPN = []string{"h2"}
這將阻止它通過ALPN廣播HTTP / 1.1。
然后將此代碼添加到ServeHTTP
方法的開頭:
func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if !r.ProtoAtLeast(2, 0) {
if hj, ok := w.(http.Hijacker); ok {
conn, _, err := hj.Hijack()
if err == nil {
conn.Close()
}
}
return
}
…
}
如果使用任何早於HTTP / 2的協議,這將立即關閉連接而不發送標題。
您可以使用以下規則來阻止所有http1請求。 但是不建議這樣做。
if ($server_protocol ~* "HTTP/1*") {
return 444;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.