1负载均衡
2作为web服务器使用
3反向代理
4作为下载服务器
5适配PC和移动设备
1负载均衡
什么是负载均衡
当一百台服务器在单位时间内的d访问量越大时,主服务器压力就越大,大到超过主服务器自身承受能力时,服务器就会崩溃。为了避免服务器崩溃,让用户有更好的体验,我们通过负载均衡的方式来分担服务器压力。
我们可以建立很多很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,在让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求到该服务器。如此以来,用户的每次访问,都会保证服务器集群中的每个服务器压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。
Http层负载均衡配
upstream web{
server 192.168.237.51:80;
server 192.168.237.51:81;
}
server {
listen 88;
location / {
proxy_pass http://web;
}
}
Tcp层反向代理负载均衡配置
worker_processes 1;
events {
worker_connections 1024;
}
stream {
log_format basic '$remote_addr [$time_local]
'
'$protocol $status $bytes_sent
$bytes_received '
'$session_time $upstream_addr';
access_log logs/tcp.log basic;
upstream web{
server 192.168.237.51:80;
server 192.168.237.51:81;
}
server {
listen 88;
proxy_pass web;
}
}
常用的负载均衡策略有:
1、轮询
将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
2、加权轮询
不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。
给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。
3、ip_hash(源地址哈希法)
根据获取客户端的IP地址,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客户端要访问服务器的序号。
采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。
4、随机
通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。
5、least_conn(最小连接数法)
由于后端服务器的配置不尽相同,对于请求的处理有快有慢,最小连接数法根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器。
3作为web服务器使用
Nginx专为性能优化而开发,其最知名的优点是它的稳定性和低系统资源消耗,以及对http并发连接的高处理能力(单台物理服务器可支持30000~50000个并发请求)。正因为如此,大量提供社交网络、新闻资讯、电子商务及虚拟主机等服务的企业纷纷选择Nginx来提供Web服务。
4反向代理
什么是正向代理?
正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
什么是反向代理?
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
配置如下
server{
listen 80;
server_name www.baidu.com;
location / {
proxy_pass https://news.baidu.com;
}
}
5作为下载服务器
配置如下
Nginx配置autoindex开启文件索引
location ~ /download {
root html;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
6适配PC和移动设备
适配PC和移动设备
http_user_agent的使用
Nginx通过内置变量$http_user_agent,可以获取到请求客户端的userAgent,就可以用户目前处于移动端还是PC端,进而展示不同的页面给用户。
操作步骤如下:
在/usr/share/nginx/目录下新建两个文件夹,分别为:pc和mobile目录
cd /usr/share/nginx
mkdir pc
mkdir mobile
在pc和miblic目录下,新建两个index.html文件,文件里下面内容
<h1>I am pc!</h1>
<h1>I am mobile!</h1>
进入etc/nginx/conf.d目录下,修改name.conf文件,改为下面的形式
server{
listen 80;
server_name nginx2.jspang.com;
location / {
root /usr/share/nginx/pc;
if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {
root /usr/share/nginx/mobile;
}
index index.html;
}
}