自学内容网 自学内容网

网站架构知识之nginx负载均衡(day027)

1.反向代理

代理服务器的/etc/nginx/conf.d书写如下配置

#代理服务器,域名: proxy.cn
server{
  listen 80;
  server_name proxy.cn;
  access_log /var/log/nginx/proxy.cn_access.log main;
  error_log /var/log/nginx/proxy.cn_error.log notice;
  location / {
  proxy_pass http://10.0.0.7;
  #lb01-->web发送请求的时候,保持host头
  proxy_set_header Host $http_host;
}
}

#将请求发送给代理服务器

proxy_pass http://10.0.0.7;

#lb01-->web发送请求的时候,默认是ip,此时只能访问到默认虚拟主机,该命令修改web的请求头,Host部分。

proxy_set_header Host $http_host;

此处等同于proxy_set_header Host  proxy.cn(域名)

结果:

此时,curl -H Host:proxy.cn http://10.0.0.5,可以通过访问10.0.0.5代理服务器访问web服务器10.0.0.7的页面。

若在web服务器需要知道客户端IP,需要加上proxy_set_header  X-Forwarded-For  $remote_addr;

多层代理则使用proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;

生产环境可以如下配置:

proxy_set_header Host $http_host;

proxy_set_header  X-Real-IP  $remote_addr;

proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;

2.负载均衡

代理服务器如下配置

#把所有web服务器写到此处,cfg_pools为服务器池塘名字,需要与下面对应
upstream cfg_pools{
   server 10.0.0.7:80;
   server 10.0.0.8:80;
}
server {
  listen 80;
  server_name cxk.oldboy.linux.cn;
  access_log /var/log/nginx/cxk.cn_access.log main;
  error_log /var/log/nginx/cxk.cn_error.log notice;
  #location将请求发送给服务器池塘
  location / {
  proxy_pass http://cfg_pools;
  #lb01-->web发送请求的时候,保持host头
  proxy_set_header Host $http_host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
}
}

虚拟主机正常配置即可(将虚拟主机看成正常的nginx配置)


原文地址:https://blog.csdn.net/ccnnlxc/article/details/143777059

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!