重新定义请求头
-
借助
proxy_set_header关键字- 可以重新定义或添加字段传递给代理服务器的请求头
-
例子
server { #https证书的相关ssl配置 #多级反向代理抓出真实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; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Connection "Keep-Alive"; proxy_read_timeout 90; proxy_http_version 1.1; localtion / { } }-
主要参数解释
proxy_set_header Host $host;- 把用户真实的请求Header中的Host字段,封装到请求头后,转发给下一级,以此区分最开始是从哪个域名访问的
proxy_set_header X-Real-IP $remote_addr;- 把用户真实的IP,封装到请求头后,转发给下一级
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;- 由于
X-Forwarded-For是非rfc标准的,所以为了下一级的需要,还是要自己手动增加$proxy_add_x_forwarded_for变量,再发过去- 这个变量
- 如果在第一级proxy,包含客户端请求头中的"X-Forwarded-For"(这时默认是空),与$remote_addr(真实用户ip)两部分
- 如果在第二级proxy,包含第一级请求头中的"X-Forwarded-For"(这时里面有真实用户ip),与$remote_addr(第一级proxy的ip)两部分
- 这个变量
- 由于
proxy_set_header X-Forwarded-Proto $scheme;- 把用户真实的访问协议(http还是https),封装到请求头后,转发给下一级
proxy_set_header Connection "Keep-Alive";- 强制设置与下一级的连接为长连接
-
其他参数解释
proxy_read_timeout 90;- 连接成功后,等候后端服务器的响应时间
proxy_http_version 1.1;- 强制设置与下一级(比如server)的http连接版本是 1.1,可以
获得对长连接的支持(从1.1版本之后才有)- 默认都是 1.0版本 短连接,即一个请求来了,Nginx 新开一个端口和后端建立连接,后端执行完毕后主动关闭该链接
- nginx已经
自动开启了对上一级(比如client)的长连接keep alive支持(当然要保证client发送的HTTP请求要有keep alive)
- 强制设置与下一级(比如server)的http连接版本是 1.1,可以
-