Nginx的入门详解

Nginx是一个高性能的HTTP和反向代理服务器,常用于实现负载均衡。正向代理帮助用户访问受限资源,而反向代理则用于分散服务器压力。Nginx支持轮询、最少链接、ip_hash和权重等负载均衡策略,其中ip_hash能保持用户会话的连续性,权重策略允许根据服务器性能分配请求。配置示例展示了如何在Nginx中设置这些策略,适用于不同场景和需求。
摘要由CSDN通过智能技术生成

Nginx 是什么

Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,同时也提供了 IMAP/POP3/SMTP 服务。其特点是占有内存少,并发能力强,事实上 nginx 的并发能力在同类型的网页服务器中表现较好,使用 nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等

为什么要使用 Nginx

随着当今互联网的迅速发展,单点服务器早已无法承载上万个乃至数十万个用户的持续访问。比如一台 Tomcat 服务器在理想状态下只能够可以承受住 2000 个左右的并发量,为了解决这个问题,就需要多台 Tomcat 服务器来进行负载均衡

那么,应该如何实现负载均衡? Nginx 就是其中的一种解决方案,当用户访问网站时,Nginx 拦截到这个访问请求,并将其通过轮询的方式均匀地分配到不同的服务器上

在这里插入图片描述

并且,在 Nginx 中有一种 ip_hash 策略,它可以获取到用户的真实 IP,计算出 hash 值来选择服务器,这也是一种优秀的负载均衡方式

正向代理

正向代理类似一个跳板机,代理访问外部资源。比如:我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器,它能访问那个我不能访问的网站,于是我先连上代理服务器,告诉它我需要那个无法访问的网站的内容,代理服务器去取回来,然后返回给我

在这里插入图片描述
正向代理是代理客户端的

反向代理

反向代理方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器

在这里插入图片描述
反向代理是代理服务器端的

Nginx 支持哪些负载均衡策略

  • 轮询:将请求依次轮询发给每个服务器
  • 最少链接:将请求发送给持有最少活动链接的服务器
  • ip 哈希:通过哈希函数决定请求发送给哪个服务器
  • 权重:服务器的权重越高,处理请求的概率越大

Nginx 配置负载均衡示例

轮询

# 在nginx.conf配置文件中添加如下配置,此配置有三台服务器提供支付服务
http {
     upstream CashServers {
			server 127.0.0.1:8080;
            server 127.0.0.1:8070;
            server 127.0.0.1:8060;
     }
     
     server {
            listen       80;        # 监听端口一般都为http端口:80
            server_name  localhost; # 当前服务的域名
            location / {
                 proxy_pass http://CashServers;
            }
     }       
}
  • 默认配置就是轮询策略
  • nginx 负载均衡支持 httphttps 协议,只需要修改 proxy_pass 后协议即可
  • nginx 支持 FastCGI, uwsgi, SCGI,memcached 的负载均衡,只需将 proxy_pass 改为 fastcgi_pass, uwsgi_pass, scgi_pass,memcached_pass 即可
  • 此策略适合服务器配置相当,无状态且短平快的服务使用

最少链接

http {
 	upstream CashServers {
  			least_conn;
  			server CashServers1.com;
  			server CashServers2.com;
  			server CashServers3.com;
 	}

 	server {
  			listen 80;
  			location / {
   				proxy_pass http://CashServers;
  			}
 	}
}
  • 最少链接负载均衡通过 least_conn 指令定义
  • 此负载均衡策略适合请求处理时间长短不一造成服务器过载的情况

ip_hash

http {
 	upstream CashServers {
  			ip_hash;
  			server CashServers1.com;
  			server CashServers2.com;
  			server CashServers3.com;
 	}

 	server {
  			listen 80;
  			location / {
   				proxy_pass http://CashServers;
  			}
 	}
}
  • ip_hash 负载均衡使用 ip_hash 指令定义
  • nginx 使用请求客户端的 ip 地址进行 hash 计算,确保使用同一个服务器响应请求
  • 此策略适合有状态服务,比如 session

权重

http {
 	upstream CashServers {  
  			server CashServers1.com weight=3;
  			server CashServers2.com weight=2;
  			server CashServers3.com weight=1;
 	}

 	server {
  			listen 80;
  			location / {
   				proxy_pass http://CashServers;
  			}
 	}
}
  • 权重负载均衡需要使用 weight 指令定义
  • 权重越高分配到需要处理的请求越多
  • 此策略可以与最少链接负载和 ip_hash 策略结合使用
  • 此策略比较适合服务器的硬件配置差别比较大的情况

轮询负载均衡实战

# 在nginx.conf配置文件中添加如下配置,此配置有两台服务器提供支付服务
http {
    # 配置要映射的服务器,nginx 默认的负载均衡策略是轮询,其权重都默认为 1
    # mytest: 要映射的服务器的域名
    upstream mytest { 
            server 127.0.0.1:8090;
            server 127.0.0.1:8070;
     }
    server {
            listen       80;        # 监听端口一般都为 http 端口 80
            server_name  localhost; # 当前服务的域名
            location / {
                # 要映射的服务器地址
                proxy_pass http://mytest; 
            }
     }       
}

启动 nginx,在浏览器地址栏输入:http://localhost:80/redPacket/save

  • server_name localhost; 当前服务的域名
  • listen 80; 监听端口一般都为 http 端口 80

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值