飞道的博客

Nginx学习笔记(一)功能和负载均衡

308人阅读  评论(0)

就目前来说nginx已经是计算机系统的必备组件了。主要的作用有静态资源代理、反向服务代理,负载均衡,虚拟主机,fastcgi等。

一.静态资源代理,将静态资源放置到nginx,静态资源直接通过nginx获取,能够降低服务端的压力,并实现前后分离。


   
  1. server{
  2. listen: 80,
  3. location /{
  4. #这里的静态资源的关联资源建议使用相对路径
  5. root 静态资源的路径
  6. }
  7. }

二.反向代理,用户的请求通过nginx代理访问服务器,然后将服务器的响应转发给用户端。


   
  1. server {
  2. listen80;
  3. location /abc {
  4. proxy_pass http://192.168.20.1:8080/abc;
  5. }
  6. }

三.负载均衡,在项目访问量大的情况下,服务器的响应速度就会变慢或者请求超时,所以为了避免这种情况,一般服务都是集群部署。集群部署就需要对用户的请求进行转发,而决定这里的转发策略,就是负载均衡策略。nginx主要有六种负载均衡策略,分别为:轮询、权重轮询、ip_hash、最少连接、响应时间(第三方)、url_hash(第三方)

其中相关的参数有:

fail_timeout

与max_fails结合使用,认为不可用统计时间范围。

max_fails

设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了,

fail_time

服务器会被认为停机的时间长度,默认为10s,超过统计时间会重新开始计量。

backup

标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里。

down

标记服务器永久停机了。



        1.轮询

nginx默认为轮询,表示对列表中服务逐个进行发送请求


   
  1. upstream dynamic_zuoyu {
  2. server localhost:8080;
  3.         server localhost: 8081;
  4. }

2.权重轮询

根据权重比例进行请求路由发送


   
  1.      upstream dynamic_zuoyu {
  2.       server localhost: 8083   weight= 1 max_fails= 3 fail_timeout= 20s;
  3. server localhost: 8084 weight= 2 max_fails= 3 fail_timeout= 20s;
  4. }

上述配置表示发送到8084的比例是8083的两倍,20秒之后有三次请求失败,那么就任务服务不可用,就进行剔除。超过统计期之后会重新加入进来。

3.ip_hash

是通过对请求来源的ip进行计算从而得到路由的一种方式。基于用户在访问期间ip不会变化的基本假设。但是ip_hash的问题在于如果后端服务宕机,那么用户的请求还是会被发送到那台机器。使用ip_hash的策略主要是为了解决session未做集中管理的问题。


   
  1. upstream dynamic_zuoyu {
  2. ip_hash;
  3. server localhost:8080 weight=1;
  4. server localhost:8083 weight=1 max_fails=3 fail_timeout=20s; #tomcat 9.0
  5. }

4.least_connt

将请求发送到链接数较少的后端服务器,据此策略。后端处理的请求量大概相同。这对于响应时间较长的请求是一种解决办法。但是还是不能解决后端服务宕机的问题。


   
  1. upstream dynamic_zuoyu {
  2.     least_conn;
  3. server localhost:8080 weight=1;
  4. server localhost:8083 weight=1 max_fails=3 fail_timeout=20s; #tomcat 9.0
  5. }

5.响应时间

响应时间是按照服务器的响应时间来分配请求的策略,响应时间短的优先分配

  但是该功能需要安装第三方插件相关安装过程如

https://www.cnblogs.com/xiaohanlin/p/9904487.html


   
  1. upstream dynamic_zuoyu {
  2.     fair;
  3. server localhost:8080 weight=1;
  4. server localhost:8083 weight=1 max_fails=3 fail_timeout=20s; #tomcat 9.0
  5. }

6.url_hash

根据请求的url的hash结果来分配请求,是的每个url定向到同一个后端服务器。改策略主要解决同一请求的缓存问题,如果结合缓存来使用的话。会提升系统性能。

http://chenlinux.com/2010/03/02/loadbalance-in-nginx-using-url_hash/


   
  1. upstream dynamic_zuoyu {
  2.      hash  $request_uri;
  3. server localhost: 8080 weight= 1;
  4. server localhost: 8083 weight= 1 max_fails= 3 fail_timeout= 20s; #tomcat 9.0
  5. }

四、虚拟主机

nginx虚拟主机主要为了解决同一台nginx代理多个网站不同域名同一端口或者或者同一ip不同端口的问题。在配置文件中每个server表示一个虚拟主机。


   
  1. server {
  2. listen 192.168.100.102:6666;
  3. server_name  192.168.100.102:6666;
  4. location / {
  5. root /var/www/bt;
  6. index index.html index.php;
  7. }
  8. }
  9. server {
  10. listen 192.168.100.102:8888;
  11. server_name 192.168.100.102:8888;
  12. location / {
  13. root /var/www/accp;
  14. index index.html index.php;
  15. }
  16. }


转载:https://blog.csdn.net/tianjingle_blog/article/details/112256431
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场