设为首页 - 加入收藏 永州站长网 (http://www.0746zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 如何 区块 安全 怎么
当前位置: 首页 > cc国际通用准则 > 外闻 > 正文

如何搭建Nginx服务器做到负载均衡?

发布时间:2018-10-28 04:36 所属栏目:[外闻] 来源:程序员食堂
导读:1.什么是Nginx? Nginx也是一款服务器,我们常用它做:如反向代理、负载均衡、动态与静态资源的分离的工作。 反向代理:相对应的是正向代理,如果你使用过代理服务器的话就明白,我们访问某一个网站并非直接访问目标网站,而是告诉代理服务器我需要访问什么

1.什么是Nginx?

Nginx也是一款服务器,我们常用它做:如反向代理、负载均衡、动态与静态资源的分离的工作。

反向代理:相对应的是正向代理,如果你使用过代理服务器的话就明白,我们访问某一个网站并非直接访问目标网站,而是告诉代理服务器我需要访问什么目标网站,由代理服务器发出请求给目标网站,将目标网站访问结果再转发给你,此时,你是请求代理方。而反向代理是此时代理服务器做服务器的代理,我们的访问请求并非直接访问到目标服务器上,而是访问代理服务器,由代理服务器决定什么样的请求以什么样的方式访问正式服务器。

如何搭建Nginx服务器做到负载均衡?

负载均衡:目前大多数的网站都会采用负载均衡手段来针对目前用户的指数级增长来减少对单点服务器的负载压力,比如目前我们拥有3台真实服务器,我们需要根据相应策略决定什么样的用户请求分配到哪个真实服务器,比如按照轮询的方式,用户请求挨个到达代理服务器,此时代理服务器按照第一个请求转发至第一台真实服务器,第二个请求转发到第二个服务器上,依次类推,这样可以防止大量的用户请求全部访问到同一台物理机上,单点物理机的性能始终有限的,当然这可能对服务器365bet体育在线总站_365bet平台网址_365bet注访问时候造成事务性的失效,在Web方面可能造成Session访问的问题,这不在本文讨论方面内。

动态静态资源分离:最方便列举就是Java的JSP和静态资源如:.js/.css/.html/.png方面的资源分离,之前开发web方面的程序时候我们习惯将html、css等资源文件也放置于Tomcat之中,用户访问后tomcat需要将请求的这些静态资源文件一并返回给用户,再者如果有多台同业务逻辑的tomcat服务器的话,同样的资源还需要在每个服务器上放一份,同时也增加了tomcat服务器的网络IO,十分不合算的,如果我们只讲JSP之类的请求交给tomcat,而代理服务器上存放静态资源,当用户的请求非动态资源的时候,我们完全可以将代理服务器的静态资源直接返回给用户,而不去增大Tomcat的压力,tomcat只需要负责逻辑处理和动态资源的加载就可以了。

基于上述的Nginx优势,决定搭建一下Nginx+Tomcat的组合来进行测试,包括参数传递,post、get传递参数是否有影响,还有Nginx的工作模式master和worker的工作方式进行一些浅薄的总结。如有错误,恳请大家指出。

2.Nginx的安装问题?

安装部分这里就不在细说了,网上的教程很多,我们直接从配置文件开始吧

3.配置文件

  1. #user??nobody;?
  2. #这里是核心worker数,一般设置为与cpu核心数相同的数目,避免进程切换造成的上下文切换耗费资源,cpu信息可以从/proc/cpuinfo中查看?
  3. worker_processes??1;?
  4. ?
  5. #error_log??logs/error.log;?
  6. #error_log??logs/error.log??notice;?
  7. #error_log??logs/error.log??info;?
  8. #pid??????logs/nginx.pid;?
  9. events?{?
  10. ????#use?epoll?model使用epoll模型,采用异步非阻塞模型加快处理速度?
  11. ????use?epoll;????worker_connections??1024;?}?
  12. http?{????include???????mime.types;????default_type??application/octet-stream;???
  13. ?#log_format??main??'$remote_addr?-?$remote_user?[$time_local]?"$request"?'????#??????????????????'$status?$body_bytes_sent?"$http_referer"?'????#??????????????????'"$http_user_agent"?"$http_x_forwarded_for"';????#access_log??logs/access.log??main;????#设定通过nginx上传文件的大小????client_max_body_size?300m;?
  14. #使用sendfile函数在两个文件描述符之间直接传递365bet体育在线总站_365bet平台网址_365bet注(完全在内核中操作,传送),从而避免了内核缓冲区365bet体育在线总站_365bet平台网址_365bet注和用户缓冲区365bet体育在线总站_365bet平台网址_365bet注之间的拷贝,操作效率很高,被称之为零拷贝。????sendfile????????on;?
  15. ???#tcp_nopush?????on;????#keepalive_timeout??0;????#连接活跃时间????keepalive_timeout??65;#使用压缩365bet体育在线总站_365bet平台网址_365bet注减少IO量,但是在不支持365bet体育在线总站_365bet平台网址_365bet注解压浏览器可能产生乱码????#gzip??on;????#静态服务器组????#设定静态资源服务器访问接口??????upstream?static.zh-jieli.com?{???????
  16. ???????????server?localhost:808?weight=1;??????}??????#动态服务器组??????upstream?zh-jieli.com?{?????????
  17. #设置Hash轮询规则?
  18. #ip_hash;?
  19. #weight:?server?ip:port?weight=10#默认?轮询#?
  20. fair:按照后端服务器的响应时间来分配?
  21. #url_hash:按照url规则进行分配,使得固定的请求分配到固定的服务器上??????????????????server?localhost:8080;?????????
  22. ?????????server?localhost:8081;?
  23. ?????}???
  24. ?server{?????????listen?808;?????????server_name?static;?????????location?/?{?????????}???location?~?.*\.(js|css|ico|png|jpg|eot|svg|ttf|woff)?{?????????????#所有静态文件直接读取硬盘内容:读取的静态资源存放位置??root?/apache-tomcat-8.5.24/webapps/ROOT?;?
  25. ?#资源是否进行缓存与缓存时间?????????????expires?30d;?#缓存30天?????????}?????}?????
  26. server?{????????listen???????80;????????server_name??localhost;?????????
  27. ????????#charset?koi8-r;????????#access_log??logs/host.access.log??main;????????location?/?{????????????root???html;???????????
  28. ????????????index??index1.html?index.htm;????????}????????location?~?.*\.(js|css|ico|png|jpg|eot|svg|ttf|woff)?{??????????????????#proxy_cache?cache_one;??????????????proxy_cache_valid?200?304?302?5d;??????????????proxy_cache_valid?any?5d;??????????????proxy_cache_key?'$host:$server_port$request_uri';??????????????add_header?X-Cache?'$upstream_cache_status?from?$host';??????????????proxy_pass?http://static.zh-jieli.com;?????????????#?所有静态文件直接读取硬盘??????????????root?/apache-tomcat-8.5.24/webapps/ROOT;??????????????expires?30d;?#缓存30天??????????}???????????
  29. #其他页面反向代理到tomcat容器??????????location?^~?/tomcat?{???????????
  30. ????????????index?index;???????????????????#?proxy_pass?http://localhost:8080/;?????????????#设定代理服务器组??????????????proxy_pass?http://zh-jieli.com/;??????????}????????error_page???500?502?503?504??/50x.html;????????location?=?/50x.html?{????????????root???html;????????}????}?}?

总结

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章