通过上述示例,我们已经看到Nginx对于多个域名的负载均衡时如何配置的。Upstream指令用于设置一组可以在proxy_pass和fastcgi_pass指令中使用的代理服务器,默认负载均衡方式为轮询。Upatream模块中的Server指令用于指定后端服务器的名称和参数,服务器的名称可以是一个域名、一个IP地址、端口或UNIX Socket。
而在server{...}虚拟主机内,可以通过proxy_pass和fastcgi_pass指令设置进行反向代理的upstream服务器集群。
proxy_set_header指令用于在向反向代理的后端Web服务器发送请求时添加指定的Header头信息。
当后端Web服务器上有多个基于域名的虚拟主机时,要通过添加Header头信息Host,用于指定请求的域名,这样后端Web服务器才能识别反向代理访问请求由哪个虚拟主机来处理。
使用反向代理之后,后端Web服务器(以PHP为例)不能直接通过$_SERVER["REMOTE_ADDR"]变量来获得用户的真实IP了,通过$_SERVER["REMOTE_ADDR"]获取的将是Nginx负载均衡服务器的IP.这时,要通过在Nginx反向代理时添加Header头信息X-Forwarded-For,让后端Web服务器能够通过$_SERVER["HTTP_X_FORWARDED_FOR"]获取到用户的真实IP。