先来看下proxy_set_header的语法
语法: | proxy_set_header |
默认值: |
proxy_set_header Host $proxy_host; proxy_set_header Connection close; |
上下文: |
http , server , location
|
允许重新定义或者添加发往后端服务器的请求头。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 "";
相关推荐
# proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Scheme $scheme; # proxy_pass http://192.168.2.37; #} location / { proxy...
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" ) {...
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-...
2. 避免使用 `proxy_set_header Host $host`,因为它可能导致缓存失效。 3. 如果 `proxy_pass` 使用 upstream,可以替换为域名或 IP。 ### 第三步:配置 proxy_pass 跳转的 location 中的静态文件路径 确保 Nginx ...
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;...
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....
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 ``` ...
- `proxy_set_header Host $host;`:设置代理服务器传递给目标服务器的请求头中的 `Host` 字段。 - `proxy_set_header X-Real-IP $remote_addr;`:设置代理服务器传递给目标服务器的请求头中的 `X-Real-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; } } } ``` 3. 修改`conf.d/xiaoxin.conf`,设置会话共享: ```nginx ...
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; } ...
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_...
proxy_store用于设置代理存储,proxy_temp_path用于设置代理临时文件路径,proxy_redirect用于设置代理重定向,proxy_set_header用于设置代理头信息。 nginx的安装与配置是非常重要的,需要根据实际情况进行配置,...
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } } ``` 三、Tomcat集群配置 Tomcat集群旨在提高可用性和可伸缩性。主要涉及以下步骤: 1. 在每个Tomcat实例中,配置`server.xml`...
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...
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 ...
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; ...
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; ...
`proxy_set_header`指令用于设置HTTP头,确保后端服务器能获取到原始客户端的IP(`X-Real-IP`)、请求链路信息(`X-Forwarded-For`)以及Host信息(`Host`),这对于日志记录和基于Host的路由非常重要。 ### 负载...
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`,同时保留...