您的位置:首页 > 新闻资讯 >文章内容
代理IP分享如何搭建搭建负载集群(下)
来源:互联网 作者:admin 时间:2019-09-27 09:59:49

  经过前面的长长铺垫,我们终于进入到Linux+NetCore+Nginx搭建负载集群的重头戏了。前方知识点比较多,代理IP建议细细查看,这样才是学习知识的正确姿势。相关阅读:如何搭建搭建负载集群(上)


  4、部署一个集群(Linux+NetCore+Nginx)


  来到这里即将进入今天的重点环节,由于在前面已经分别生成了windows和ubuntu的netcore运行包所以这里直接使用,对于一个用nginx搭建的集群需要做很多配置工作,如:资源缓存,配置映射地址等,反正nginx有很多配置,今天讲解的仅仅往简单的方向靠拢;我们先来看副流程图:

  

代理IP分享如何搭建搭建负载集群


  这是要完成的目标,通过nginx所在的unbunt系统的80端口,负载转发用户的请求;上图的windows站点和ubunt站点项目是一样的,就是咋们上面生成的netcore发布包;用户通过访问代理...66:80=>转发请求到不同服务器上的站点(测试站点就两个,可以无限扩充);


  下面来看下nginx要怎么配置才能够做负载均衡呢,如下配置信息:


  #cache begin 缓存文件

  proxy_temp_path /var/www/proxy_tmp;

  proxy_cache_path /var/www/proxy_cache levels=1:2 keys_zone=my_cache:200m inactive=600m max_size=30g;

  #cache end

  #集群站点配置

  upstream shenniu.services{

  server 172.16.21.66:1121 fail_timeout=60s;

  server 172.16.21.8:1120 fail_timeout=60s;

  }

  server {

  #代理监听端口

  listen 80 default_server;

  listen [::]:80 default_server;

  root /var/www/html;

  server_name _; #_默认ip+端口访问,_可以替换成访问域名如:shenniu.core.com

  #缓存文件路由

  location ~ .*(\.(js|css|jpg|svg)).* {

  proxy_pass http://shenniu.services;

  proxy_cache_valid 200;

  proxy_cache my_cache;

  expires 3d;

  }

  #集群站点路由

  location / {

  proxy_pass http://shenniu.services; #http://shenniu.services对应upstream后面的名称

  proxy_http_version 1.1;

  proxy_set_header Upgrade $http_upgrade;

  proxy_set_header Connection keep-alive;

  proxy_set_header Host $host;

  proxy_cache_bypass $http_upgrade;

  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  }

  }


  通过如上nginx的配置,咋们再重新让nginx加载下配置文件命令如: sudo nginx -t reload ,然后我们在浏览器访问nginx代理地址: http://172.16.21.66/ ,如下git效果图:

  

代理IP分享如何搭建搭建负载集群

  由图能够看出来,这个所在服务器ip不停在windows和ubutn子站点的ip来回变动,负载到此就成功了。


  获取访问集群的用户ip和响应服务所在服务器的ip


  获取用户真实ip对于负载来说需要设置一些东西,这里就nginx的配置而言,在location配置了 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 这句才能够通过程序的Request.header的方式获取出来,不然Request里面的ip始终只能够是代理服务器的ip;


  有朋友会问为什么呢,答:因为用户是通过代理服务器来访问咋们的服务,服务接受到的访问请求是代理服务器的,所以呢获取出来的ip就是代理服务器ip;


  为了处理这种问题只需要通过上面配置的nginx需要的X-Forwarded-For参数来传递,而对于netcore2.0来说仅仅需要咋们在程序的Startup.cs中这样设置下:


  1 app.UseForwardedHeaders(new ForwardedHeadersOptions

  2 {

  3 ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto

  4 });

  5 app.UseAuthentication();


  然后就能在任何界面获取到用户真实的访问ip了,测试用例如下:


  客户端:<br />

  Request.HttpContext获取访问ip:@Request.HttpContext.Connection.RemoteIpAddress

  <br />

  Request.Headers获取访问ip:@Request.Headers["X-Forwarded-For"]

  <br />

  服务端:<br />

  Request.HttpContext获取响应服务所在服务器的ip:@Request.HttpContext.Connection.LocalIpAddress

  <table class="table">

  <thead>

  <tr>

  <th>key</th>

  <th>value</th>

  </tr>

  </thead>

  <tbody>

  @foreach (var item in Request.Headers)

  {

  <tr>

  <td>@item.Key</td>

  <td>@item.Value</td>

  </tr>

  }

  </tbody>

  </table>


  以上就是从准备到搭建的完整流程,是不是又赶紧涨知识了呢?


相关文章内容简介
推荐阅读
  • 15 2019-05
    分布式高质量代理IP

    在大数据时代,爬虫已成为互联网数据公司的关键职位。他们不仅要精通数据捕获和分析,还要熟悉搜索引擎和相关的搜索算法。其次还要熟悉搜索引擎和相关检索算法,对内存、性能、分布式

  • 20 2019-12
    为什么高匿代理难被检测到?

    为什么高匿代理难被检测到?很多人使用代理IP​都是为了隐藏真实的IP,不过有些代理IP是隐藏不了,很容易被识别,因此大家最喜欢使用高匿名代理IP,这是为什么?

  • 04 2019-04
    IP代理池的组成以及搭建过程中遇到的问题

    我们搭建IP代理池,一般都是选择免费的,不过免费的采集也简单,无非就是:访问页面页面 —> 正则/xpath提取 —> 保存。下面我们来看看IP代理池的组成以及搭建过程中遇到的问题。

  • 03 2019-12
    免费IP可以怎么得到?

    经常在网上看到免费代理,这些免费代理IP可以从什么渠道找到呢?免费IP代理又适合用在什么地方呢?下面我们跟着机灵代理来认识一下。

  • 25 2019-12
    高匿代理有哪些功能?

    高匿代理有哪些功能?高匿IP代理这种工具,能够对访问的远端服务器隐藏原本的原始IP,ip代理的高匿名性是通过非常规的技术手段这种方式,直接将代理ip地址运管用于用户端,从而达到高匿名

  • 29 2019-10
    https代理怎么用于爬虫?

    除了http代理,现在很多网站都开启了https认证,这么一来,https代理的使用也变得多了。在爬虫的时候,我们要怎么使用https代理?且看机灵代理带来的攻略。

在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部