加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

Nginx:何时使用proxy_set_header Host $host vs $proxy_host

发布时间:2020-12-13 21:30:49 所属栏目:Nginx 来源:网络整理
导读:我一直在阅读反向代理,并想知道proxy_set_header Host $host是否适合于proxy_set_header Host $proxy_host.我做了一些研究,在this article,它说在大多数情况下我们将Host设置为$host.那为什么nginx默认为$proxy_host?为了帮助我更具体地理解,如果我们使用$p

我一直在阅读反向代理,并想知道proxy_set_header Host $host是否适合于proxy_set_header Host $proxy_host.我做了一些研究,在this article,它说在大多数情况下我们将Host设置为$host.那为什么nginx默认为$proxy_host?为了帮助我更具体地理解,如果我们使用$proxy_host,反向代理配置here(文章底部)是否仍然有效?

谢谢

最佳答案
通常,不需要显式执行proxy_set_header主机proxy_host,因为它是默认值.如果你需要通过proxy_pass指令之外的其他东西来调用服务器,那么你需要通过proxy_set_header覆盖一些东西.

如果要代理与server_name指令中的主机相同的主机,那么您将有机会使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读