nginx实现反向代理和负载均衡

10 篇文章 0 订阅
7 篇文章 0 订阅

1:为什么要实现负载均衡:

    当一台服务器的单位时间内访问量越大的时候,服务器压力会越大,当一台服务器压力大得超过自身的承受压力的时候,服务器会崩溃,为了避免服务器崩溃,让用户更好的体验,我们通常通过负载均衡的方式来分担服务器的压力。那么什么是负载均衡呢?我们可以建立很多个服务器,这些服务器组成一个服务器集群,然后当用户访问我们的网站的时候,先访问一个中间服务器,再让这个中间服务器在服务器群众选着一个压力较小的服务器,然后将改访问请求引入该选择的服务器。这样,用户每次的访问,都会保证服务器集群中的每个服务器的压力区域平衡,分担了服务器的压力,避免了了服务器崩溃的情况。

2:nginx优势:

nginx是一款可以通过反向代理实现负载均衡的服务器,使用nginx服务器实现负载均衡的时候,用户首先会访问到nginx服务器,然后nginx服务器再从服务器群众选择压力较小的服务器,把改访问请求引入到该服务器。若服务器群中的某个服务器崩溃,那么从待选的服务器列表中将该服务器删除,也就是说如果一个服务器崩溃了,那么nginx就肯定不会把访问引入该服务器了。

3:正向与反向代理:

example:

如图所示:

图一:正向代理


图二:反向代理,也可理解为负载均衡

4:nginx负载均衡实现:

首先我们要有服务器群,正常的生产环境中,服务器群中存放的内容都是一样的,nginx作为中间服务器,将用户的访问根据服务器群压力大小,引入到压力较小的服务器,实现负载均衡。在此实验中我们为了能看到实现负载将请求引入到不同的服务器下,所以服务器群的内容要不一致,这样才能直观看出看出我们nginx实现了负载均衡。(如果实验所用的服务器群里面的内容都一样,不易看出是否nginx将访问请求引入到不同的服务器)
准备:假如我们有个服务器群,有三台服务器。(分别是百度,京东,本人小博客)
由于做实验,就直接修改了nginx主配置文件。
http {
    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  /var/log/nginx/access.log  main;
upstream myservers{
server 115.159.105.94;
server 111.206.227.118;
server 61.135.169.125;
}

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       8088 default_server;
        listen       [::]:8088 default_server;
        server_name  _;
 #       root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
		proxy_pass http://myservers;
        }
 error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }# Settings for a TLS enabled server.## server {# listen 443 ssl http2 default_server;# listen [::]:443 ssl http2 default_server;# server_name _;# root /usr/share/nginx/html;## ssl_certificate "/etc/pki/nginx/server.crt";# ssl_certificate_key "/etc/pki/nginx/private/server.key";# ssl_session_cache shared:SSL:1m;# ssl_session_timeout 10m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;## # Load configuration files for the default server block.# include /etc/nginx/default.d/*.conf;## location / {# }## error_page 404 /404.html;# location = /40x.html {# }## error_page 500 502 503 504 /50x.html;# location = /50x.html {# }# }}
注:在配置文件中:
upstream myservers{#myservers为自己定义的服务器群名称,可以随意修改
server 115.159.105.99;(个人小博客)
server 111.206.227.118;(京东)
server 61.135.169.125;(百度)
}
是我们的服务器集群,
在server中配置:可以看到我们修改端口为监听8088.在location中将我们的访问指向我们的服务器群,也就是说当我们访问www.example.com:8088(假装域名为www.example.com)就会将我们根据服务器群的压力大小引入不同的服务器,所以在实验中可以看到我们刷新的时候一会在百度,一会在京东,一会在自己的小博客。这样既实现了负载均衡
 server {
        listen       8088 default_server;
        listen       [::]:8088 default_server;
        server_name  _;
 #       root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
		proxy_pass http://myservers;
        }
}

至此,nginx实现负载均衡完成。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值