`
liuluo129
  • 浏览: 116203 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

proxy_set_header设置Host为$proxy_host,$host与$local_host的区别

阅读更多
先来看下proxy_set_header的语法
语法: proxy_set_header field value;
默认值:
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
上下文: httpserverlocation

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

proxy_set_header Host       $proxy_host;
proxy_set_header Connection close;

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

 

upstream backend {
	server 127.0.0.1:8080;
}
upstream crmtest {
	server crmtest.aty.sohuno.com;
}
server {
        listen       80;
        server_name  chuan.aty.sohuno.com;
        proxy_set_header Host $http_host;
        proxy_set_header x-forwarded-for  $remote_addr;
        proxy_buffer_size         64k;
        proxy_buffers             32 64k;
        charset utf-8;

        access_log  logs/host.access.log  main;
		location = /50x.html {
            root   html;
        }
	location / {
		proxy_pass backend ;
	}
		
	location = /customer/straightcustomer/download {
		proxy_pass http://crmtest;
		proxy_set_header Host $proxy_host;
	}
}

 

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

 

proxy_set_header Host crmtest.aty.sohuno.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 "";
0
2
分享到:
评论

相关推荐

    nginx 反向代理软件

    # proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Scheme $scheme; # proxy_pass http://192.168.2.37; #} location / { proxy...

    nginx location中多个if里面proxy_pass的方法

    proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_set_header Connection ""; if ( $query_string ~* "usg=0" ) { proxy_pass http://local_workera; } if ( $query_string ~* "usg=1" ) {...

    Nginx正向代理http和https.md

    proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-...

    nginx静态文件缓存的解决方案1

    2. 避免使用 `proxy_set_header Host $host`,因为它可能导致缓存失效。 3. 如果 `proxy_pass` 使用 upstream,可以替换为域名或 IP。 ### 第三步:配置 proxy_pass 跳转的 location 中的静态文件路径 确保 Nginx ...

    nginx-1.25.1(ngx-http-proxy-connect-module插件)windows版本

    proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_connect_module;...

    Nginx负载均衡配置.pdf

    proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 在上面的配置中,我们使用了 upstream 模块来定义一个名为 my....

    nginx基于red7.3源码部署.zip

    proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 更新Nginx配置并重启服务: ``` sudo nginx -s reload ``` ...

    linux下Nginx+tomcat安装与配置

    - `proxy_set_header Host $host;`:设置代理服务器传递给目标服务器的请求头中的 `Host` 字段。 - `proxy_set_header X-Real-IP $remote_addr;`:设置代理服务器传递给目标服务器的请求头中的 `X-Real-IP` 字段,...

    Ngxin+双tomcat负载+mem做session共享

    proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } } ``` 3. 修改`conf.d/xiaoxin.conf`,设置会话共享: ```nginx ...

    centos+nginx+vue+django部署办法.docx

    proxy_set_header Host $host:$server_port; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } ...

    dns+nginx+tomcat实现https

    proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://www.wg.com; } } server { listen 80; server_...

    Windows下Nginx的安装与配置

    proxy_store用于设置代理存储,proxy_temp_path用于设置代理临时文件路径,proxy_redirect用于设置代理重定向,proxy_set_header用于设置代理头信息。 nginx的安装与配置是非常重要的,需要根据实际情况进行配置,...

    nginx+Tomcat集群简单配置及相关文档

    proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } } ``` 三、Tomcat集群配置 Tomcat集群旨在提高可用性和可伸缩性。主要涉及以下步骤: 1. 在每个Tomcat实例中,配置`server.xml`...

    Nginx+Tomcat+Memcached实现tomcat集群和session共享.docx

    proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 设置session共享 proxy_session off; proxy_cache_bypass $cookie_session; proxy_next_upstream error time...

    nginx解决前后分离开发跨域问题

    proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 解决预检请求(CORS Preflight)的超时问题 proxy_send_timeout ...

    linux下Nginx+tomcat整合的安装与配置.docx

    proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # 获取真实IP #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 获取代理者的真实IP client_max_body_size 10m; ...

    linux下Nginx+tomcat整合的安装与配置

    proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # 获取真实IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 获取代理者的真实IP client_max_body_size 10m; ...

    nginx负载均衡配置文档.pdf

    `proxy_set_header`指令用于设置HTTP头,确保后端服务器能获取到原始客户端的IP(`X-Real-IP`)、请求链路信息(`X-Forwarded-For`)以及Host信息(`Host`),这对于日志记录和基于Host的路由非常重要。 ### 负载...

    nginx配置文件-安装客户端ip进行转发

    proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } ``` 上述配置将所有请求转发到`http://backend_server`,同时保留...

Global site tag (gtag.js) - Google Analytics