小言_互联网的博客

Nginx反向代理与动静分离集群

412人阅读  评论(0)

一、简介

       代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。

       正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。

       反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。

二、集群配置

  1. 负载均衡(ngx_http_upstream_module)


  
  1. upstream backend {
  2. server backend1.example.com: 12345 weight= 5;
  3. server 127.0 .0 .1: 12345 max_fails= 3 fail_timeout= 30s;
  4. server unix:/tmp/backend2;
  5. server backup1.example.com: 12345 backup;
  6. }
标签参数说明
标签 说明
server 负载均衡后面节点地址可以是IP或域名
weight 调节服务器的请求分配权重
max_fails 定义最大的失败次数
fail_timeout 定义失败之后重发的间隔时间
check 开启对该服务的健康检查
backup 热备份参数
maxconn 指定可并发发送到该服务器的最大并发连接数
fall 指定多少次不成功的健康检查后,即认为服务器为宕机状态
inter 设置连续两次检查的间隔时间,单位毫秒
rise 指定多少次连续成功的检查后,即认定该服务器处于可用状

  2. 反向代理(ngx_http_proxy_module)


  
  1. server {
  2. listen 80;
  3. server_name www.southbay.com;
  4. location / {
  5. proxy_pass http: //backend;
  6. proxy_set_header Host $host;
  7. proxy_set_header X-Forwarded- For $remote_addr;
  8. proxy_next_upstream error timeout http_404 http_502 http_403;
  9. }
  10. }
参数说明
参数 说明
proxy_set_header 设置反向代理向后端发送的请求头信息
proxy_buffer_size 设置size用于读取从代理服务器接收到的响应的第一部分的缓冲区的
proxy_connect_timeout  定义后端节点与代理服务器建立连接的超时时间
proxy_send_timeout 设置将请求传输到代理服务器的超时时间
proxy_read_timeout 用于从代理的后端服务器读取响应时间
proxy_busy_buffers_size 用于设置系统很忙时可以使用proxy_buffers大小,推荐大小proxy_buffers*2
proxy_buffers 设置缓冲区的数量和大小
proxy_temp_file_write_size 指定proxy缓存临时文件的大小

       在代理向后端服务器发送HTTP请求头中加入host字段信息后,若后端服务器配置有多个虚拟主机,他就可以识别代理的是那个虚拟主机。这是节点服务器多虚拟主机时的关键配置。

proxy_set_header Host $host; 

在反向代理请求后端节点服务器的请求头中增加获取的客户端ip字段信息,然后节点后端可以通过程序或者相关配置接收X-Forwarded-For传过来的真实用户IP信息。

proxy_set_header X-Forwarded-For $remote_addr;

  3. 根据用户设备转发($http_user_agent


  
  1. location / {
  2. if ($http_user_agent ~* iphone) {
  3. proxy_pass http: //mobile;
  4. }
  5. if ($http_user_agent ~* Chrome) {
  6. proxy_pass http: //web;
  7. }
  8. proxy_pass http: //default;
  9. proxy_set_header Host $host;
  10. proxy_set_header X-Forwarded- For $remote_addr;
  11. proxy_next_upstream error timeout http_404 http_502 http_403;
  12. }

 


转载:https://blog.csdn.net/South_Bay/article/details/104538189
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场