正向代理:
正向代理类似于一个跳板机,代理访问外部资源,如当前计算机不能访问某一个目标网站,而有一台服务机器可以访问目标网站,此时要我们要访问目标服务器时,可以通过代理服务器,把我们无法获取的数据返回给我们。
方向代理(Reverse Proxy)
反向代理方式是指以代理服务器来接受Internet的连接请求,然后将请求转发给内部网络的服务器上,,并将服务器上的响应结果返回给Internet上的连接请求的客服端,此时代理服务器对外就表现为一个反向代理服务器。
Nginx主要运用:
- 静态网站的部署
- 服务端的负载均衡
- 静态代理
- 虚拟主机
硬件的负载均衡:
- 如:F5,深信服,Array等。
- 优点:有厂商专业的技术支持服务团队提供技术支持,性能表现稳定。
- 缺点:费用昂贵。对于规模较小的网络运用成本较高。
软件负载均衡:
- 如:Nginx,LVS,HAProxy等。
- 优点:开源免费,成本低廉。
nginx总并发数计算和配置:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
Nginx的并发总数max_conn = worker_processes * worker_connections ,但是当max_conn 值过大时,需要ulimit -HSn number
来调整然后重新启动。具体如何配置请看配置连接写的很详细。
Nginx负载均衡
- 轮询算法(Round-Robin)
Nginx 默认采取的负载均衡手段为轮询, 轮询算法是最简单的一种负载均衡算法。它的原理是把来自用户的请求轮流分配给内部的服务器:从服务器1开始,直到服务器N,然后重新开始循环。
算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。
配置实例如下:
upstream backend {
server backend1.example.com;
server backend2.example.com:8080;
server unix:/tmp/backend3;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
- 加权轮询算法(WeightedRound-Robin)
请求按一定的比例分布 请求不同的后端服务器,weight值越大访问的比例越大,使用与后端服务器性能不均的情况。
哦诶之实例如下:
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com:8080 weight=3;
server unix:/tmp/backend3 weight=1;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
- 最少连接数:
请求会被转发到连接数较少的服务器上。
配置实例:
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com down;
server backend4.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}
- ip_hash:
ip_hash也叫ip绑定,每一个请求按访问的IP的hash值分配,这样每一个访问的客户端会固定访问一个后端。
配置实例如:
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
server backend3.example.com down;
server backend4.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}