web-dev-qa-db-ja.com

Nginx:proxy_set_header Host $ Hostと$ proxy_hostを使用する場合

私は逆プロキシについて読んでいて、proxy_set_header Host $Hostproxy_set_header Host $proxy_Hostよりも適切なのはいつかと思っています。私はいくつかの調査を行い、 この記事 で、ほとんどの場合、Hostを$ Hostに設定すると述べています。次に、nginxがデフォルトで$ proxy_hostになっているのはなぜですか?より具体的に理解するために、代わりに$ proxy_Hostを使用すると、リバースプロキシ設定 here (記事の下部)は引き続き機能しますか?

ありがとう

11
Alex H

一般に、proxy_set_header Host proxy_Hostはデフォルトであるため、明示的に行う必要はありません。 proxy_passディレクティブにあるものよりも何かotherでサーバーを呼び出す必要がある場合は、proxy_set_header somethingでオーバーライドする必要があります。

server_nameディレクティブにあったsame Hostをプロキシしたい場合、proxy_set_header $Hostを使用する機会があります。これは、実際のアプリケーションが別のポートまたは内部サーバーでホストされている場合によく発生します。

server {
    listen 80;
    server_name site.example.com;

    location / {
       proxy_set_header Host $Host;
       proxy_pass http://localhost:8080;
    }
}

アップストリームを呼び出す名前が実際のDNS名ではない場合、次のようなものがあります。

# 192.168.2.1 responds to site.example.com, but
# site.example.com doesn't actually resolve to 192.168.2.1
proxy_pass http://192.168.2.1;
proxy_set_header Host site.example.com;

別のケースとして、アップストリームに便利なDNS名が存在する「名前ベース」の仮想ホスティングがありますが、別の名前で呼び出したい場合があります。

proxy_pass http://Origin.example.com;
proxy_set_header Host site.example.com
17
Joshua DeWald