Nginx之7移花接木 – (反向代理)

什么是反向代理?

  反向代理是指以代理服务器来接受用户的连接请求,然后将请求转发给另外的服务器,并将从该服务器上得到的结果转发返回给用户客户端,服务器之间的行为就称之为反向代理。Nginx的ngx_http_proxy_module模块就实现了这种方向代理的功能。

使用反向代理的作用?

  1. 反向服务器入口实现统一访问入口为内网服务器实现隐藏保证安全
  2. 反向服务器入口实现统一缓存功能减轻服务器负载
  3. 反向服务器入口实现统一日志记录
  4. 反向服务器入口实现统一访问控制
  5. 实现负载均衡

如何配置反向代理

vim /usr/local/nginx/conf/nginx.conf
server {
listen 80;
server_name proxy.yekangming.com;
location / {
proxy_pass http://nginx.yekangming.com;
}
}

  我们配置proxy.yekangming.com这个站点为用户提供访问服务,资源是来自于nginx.yekangming.com,但这个对于客户端是透明的,只知道proxy.yekangming.com提供的服务,而不知道nginx.yekangming.com的存在,这对nginx.yekangming.com提供了安全。

小技巧

proxy_set_header Host $http_host;
proxy_set_header X-Forward-For $remote_addr;

  一般在配置Nginx作为代理时,站点会添加以上的2条配置记录来修改http请求的头部信息。
那么为什么要这样做呢?

  一般代理服务器后端有多台应用服务器,如果在应用服务器利用了host字段进行路由、判断、站点选择等功能时,那么如果没有设置Host就会导致请求失败。而X_Forward_For字段表示请求的客户端的身份,如果不进行配置则后端应用服务器认为请求全部来自代理服务器,如果有访问限制的策略的话,可能会引起误识别,或者在日志收集的情况下,会发现日志信息无法使用。