Web サイトの開発またはメンテナンス中に、リバース プロキシを使用してホスト ヘッダーを変更できないという問題が発生することがあります。これにより、いくつかの問題や制限が生じる可能性があります。この記事では、PHP エディターの Xiaoxin が、この問題が発生する理由とその解決方法を説明します。初心者でも経験豊富な開発者でも、この記事では、この問題を克服し、Web サイト開発作業を正常に完了するのに役立つ解決策とヒントを提供します。
バックエンド用のリバース プロキシを構築していますが、ドキュメントに記載されている方法のいずれかを使用してホスト ヘッダーを変更しても理由がわかりませんそれは変わりません。 バックエンドには、正しいコンテンツを提供するために実際のホストが必要です。
これはコードです:
proxy := &httputil.ReverseProxy{ Director: func(req *http.Request) { targetURL := url.URL{ Scheme: "http", Host: "backend.com", Path: req.URL.Path, } req.URL.Scheme = targetURL.Scheme req.URL.Host = targetURL.Host req.URL.Path = targetURL.Path req.Header.Set("Host", targetURL.Host) }, Transport: transport, } // Listen on a local port and serve the reverse proxy without buffer method server := &http.Server{ Addr: "localhost:8080", Handler: proxy, } fmt.Println("Listening on :8080...") err = server.ListenAndServe() if err != nil { fmt.Println(err) }
詳細については、次の提案を参照してください: net/http/httputil:director を rewrite に置き換えます一个>.
go1.20 にアップグレードできない場合は、director
の解決策を次に示します:
http.request.host のドキュメントを参照してください:
クライアント要求の場合、ホストは送信されるホスト ヘッダーをオーバーライドすることを選択できます。空の場合、request.write メソッドは url.host の値を使用します。
以上がリバースプロキシを使用してホストヘッダーを変更できませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。