就目前来说nginx已经是计算机系统的必备组件了。主要的作用有静态资源代理、反向服务代理,负载均衡,虚拟主机,fastcgi等。
一.静态资源代理,将静态资源放置到nginx,静态资源直接通过nginx获取,能够降低服务端的压力,并实现前后分离。
-
server{
-
listen:
80,
-
location /{
-
#这里的静态资源的关联资源建议使用相对路径
-
root 静态资源的路径
-
}
-
}
二.反向代理,用户的请求通过nginx代理访问服务器,然后将服务器的响应转发给用户端。
-
server {
-
listen80;
-
location
/abc {
-
proxy_pass
http://192.168.20.1:8080/abc;
-
}
-
}
三.负载均衡,在项目访问量大的情况下,服务器的响应速度就会变慢或者请求超时,所以为了避免这种情况,一般服务都是集群部署。集群部署就需要对用户的请求进行转发,而决定这里的转发策略,就是负载均衡策略。nginx主要有六种负载均衡策略,分别为:轮询、权重轮询、ip_hash、最少连接、响应时间(第三方)、url_hash(第三方)
其中相关的参数有:
fail_timeout |
与max_fails结合使用,认为不可用统计时间范围。 |
max_fails |
设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了, |
fail_time |
服务器会被认为停机的时间长度,默认为10s,超过统计时间会重新开始计量。 |
backup |
标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里。 |
down |
标记服务器永久停机了。 |
1.轮询
nginx默认为轮询,表示对列表中服务逐个进行发送请求
-
upstream
dynamic_zuoyu {
-
server
localhost:8080;
-
server localhost:
8081;
-
}
2.权重轮询
根据权重比例进行请求路由发送
-
upstream dynamic_zuoyu {
-
server localhost:
8083 weight=
1 max_fails=
3 fail_timeout=
20s;
-
server localhost:
8084 weight=
2 max_fails=
3 fail_timeout=
20s;
-
}
上述配置表示发送到8084的比例是8083的两倍,20秒之后有三次请求失败,那么就任务服务不可用,就进行剔除。超过统计期之后会重新加入进来。
3.ip_hash
是通过对请求来源的ip进行计算从而得到路由的一种方式。基于用户在访问期间ip不会变化的基本假设。但是ip_hash的问题在于如果后端服务宕机,那么用户的请求还是会被发送到那台机器。使用ip_hash的策略主要是为了解决session未做集中管理的问题。
-
upstream
dynamic_zuoyu {
-
ip_hash;
-
server
localhost:8080 weight=1;
-
server
localhost:8083 weight=1 max_fails=3 fail_timeout=20s; #tomcat 9.0
-
}
4.least_connt
将请求发送到链接数较少的后端服务器,据此策略。后端处理的请求量大概相同。这对于响应时间较长的请求是一种解决办法。但是还是不能解决后端服务宕机的问题。
-
upstream
dynamic_zuoyu {
-
least_conn;
-
server
localhost:8080 weight=1;
-
server
localhost:8083 weight=1 max_fails=3 fail_timeout=20s; #tomcat 9.0
-
}
5.响应时间
响应时间是按照服务器的响应时间来分配请求的策略,响应时间短的优先分配
但是该功能需要安装第三方插件相关安装过程如
https://www.cnblogs.com/xiaohanlin/p/9904487.html
-
upstream
dynamic_zuoyu {
-
fair;
-
server
localhost:8080 weight=1;
-
server
localhost:8083 weight=1 max_fails=3 fail_timeout=20s; #tomcat 9.0
-
}
6.url_hash
根据请求的url的hash结果来分配请求,是的每个url定向到同一个后端服务器。改策略主要解决同一请求的缓存问题,如果结合缓存来使用的话。会提升系统性能。
http://chenlinux.com/2010/03/02/loadbalance-in-nginx-using-url_hash/
-
upstream dynamic_zuoyu {
-
hash
$request_uri;
-
server localhost:
8080 weight=
1;
-
server localhost:
8083 weight=
1 max_fails=
3 fail_timeout=
20s;
#tomcat 9.0
-
}
四、虚拟主机
nginx虚拟主机主要为了解决同一台nginx代理多个网站不同域名同一端口或者或者同一ip不同端口的问题。在配置文件中每个server表示一个虚拟主机。
-
server {
-
listen
192.168.100.102:6666;
-
server_name
192.168.100.102:6666;
-
location / {
-
root /var/www/bt;
-
index index.html index.php;
-
}
-
}
-
-
-
server {
-
listen
192.168.100.102:8888;
-
server_name
192.168.100.102:8888;
-
location / {
-
root /var/www/accp;
-
index index.html index.php;
-
}
-
}
转载:https://blog.csdn.net/tianjingle_blog/article/details/112256431