zoukankan      html  css  js  c++  java
  • nginx 之$proxy_host|$host|$http_host区别

    作者:gyj110 时间: 2021-02-05 08:52:01
    【摘要】proxy_set_header 允许重新定义或者添加发往后端服务器的请求头。value可以包含文本、变量或者它们的组合。 当且仅当当前配置级别中没有定义proxy_set_header指令时,会从上面的级别继承配置。 默认情况下,只有两个请求头会被重新定义:proxy_set_header Host $proxy_host;proxy_set_header Connection close...

    [云推官招募计划]

    推荐新用户注册并下单即可获得现金奖励
     上新

    [免费课程]

    Python编程学习路径
     上新

    [免费套餐]

    1核2G 2核4G云服务器免费 云数据库0元试用
     热销

    [开发利器]

    开发者专享优惠,解决研发效率、集成难题
     公告

    proxy_set_header 允许重新定义或者添加发往后端服务器的请求头。value可以包含文本、变量或者它们的组合。 当且仅当当前配置级别中没有定义proxy_set_header指令时,会从上面的级别继承配置。 默认情况下,只有两个请求头会被重新定义:

    proxy_set_header Host $proxy_host;

    proxy_set_header Connection close;

    nginx对于upstream默认使用的是基于IP的转发,因此对于以下配置:

    upstream web {  

    server abc.com;  

    }  

    server {  

    listen 80;  

    server_name   www.hehe.com;  

    location /front {  

    proxy_pass http://web;  

    proxy_set_header Host $proxy_host;  

    }  

    }

    当匹配到/front时,使用web处理,到upstream就匹配到abc.com,这里直接转换成IP进行转发。假如abc.com是在另一台nginx下配置的,ip为10.10.10.10,则$proxy_host则对应为10.10.10.10。此时相当于设置了Host为10.10.10.10。如果想让Host是abc.com,则进行如下设置:

    proxy_set_header Host abc.com;

    如果不想改变请求头“Host”的值,可以这样来设置:

     proxy_set_header Host  $http_host;

    但是,如果客户端请求头中没有携带这个头部,那么传递到后端服务器的请求也不含这个头部。 这种情况下,更好的方式是使用$host变量——它的值在请求包含“Host”请求头时为“Host”字段的值,在请求未携带“Host”请求头时为虚拟主机的主域名:

     proxy_set_header Host  $host;

    此外,服务器名可以和后端服务器的端口一起传送:

     proxy_set_header Host   $host:$proxy_port;

    如果某个请求头的值为空,那么这个请求头将不会传送给后端服务器:

     proxy_set_header Accept-Encoding "";

  • 相关阅读:
    MyEclipse 2015 Stable 2.0破解方法
    GeoGlobe Server运维
    GeoGlobe Server运维
    Silverlight用户无法注册之MySql.Data.dll不一致
    Photoshop影像匀色技术
    GeoGlobe Server使用问题收集
    Windows Server 2008 R2中无法使用360免费Wifi的解决方案
    吉奥平台软件安装经验分享
    U盘中毒后变为快捷方式的解决方法
    主机访问虚拟机中新建的网站
  • 原文地址:https://www.cnblogs.com/netflix/p/15262420.html
Copyright © 2011-2022 走看看