nginx负载均衡案例,缓存知识----补充

负载均衡案例

在这里插入图片描述

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'great all on wordpress.* to 'wp'@'172.16.1.%' indentified by '1'' at line 1
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wordpress          |
| wulin              |
+--------------------+
5 rows in set (0.00 sec)

MariaDB [(none)]> select user,host from mysql.user;
+-------+------------+
| user  | host       |
+-------+------------+
| root  | 127.0.0.1  |
| wulin | 172.16.1.% |
| root  | ::1        |
| root  | localhost  |
| wulin | localhost  |
+-------+------------+
5 rows in set (0.00 sec)

在这里插入图片描述
[root@web02 ~]#useradd -u 1999 -s /sbin/nologin -M www
在这里插入图片描述
[root@nfs01 ~]#yum install rpcbind nfs -y

[root@nfs01 ~]#systemctl enable rpcbind nfs
[root@nfs01 ~]#systemctl start rpcbind nfs
在这里插入图片描述
[root@web01 ~]#vim /etc/php-fpm.d/www.conf

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@web01 /etc/nginx/conf.d]#cat blog.wulinlinux.cn.conf
server {
  listen 80;
  server_name 192.168.28.7;
  root /app/code/blog;

  error_log /var/log/nginx/blog-error.log notice ;
  access_log /var/log/nginx/blog-access.log main;

  location / {
      index  index.php;

  }

  location ~* \.php$ {
    #chuandi php
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_buffering on;
    fastcgi_buffers 64 64k;
    #修改
    #fastcgi_param  SCRIPT_FILENAME /app/code/blog$fastcgi_scr#ipt_name;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;

    include      fastcgi_params;

  }

}
[root@web01 ~]#ll -d /app/code/blog/
drwxr-xr-x 5 nginx nginx 4096 528 15:16 /app/code/blog/
[root@web01 ~]#
[root@web01 ~]#chown -R www.www /app/code/blog/

在这里插入图片描述进入浏览器进行查看

在这里插入图片描述

挂载nfs

mkdir -p /app/code/blog/wp-content/uploads

如果报错是因为没有安装nfs-utils

yum install -y nfs-utils

记得永久挂载(开机时候先去开存储服务器)

nginx代理缓存机制

nginx的http_proxy模块,可以实现类似于Squid的缓存功能。

Nginx对客户已经访问过的内容在Nginx服务器本地建立副本,这样在一段时间内再次访问该数据,就不需要通过N ginx服务器再次向后端服务器发出请求,所以能够减少Nginx服务器与后端服务器之间的网络流量,减轻网络拥塞,同时还能减小数据传输延迟,提高用户访问速度。

同时,当后端服务器宕机时,Nginx服务器上的副本资源还能够回应相关的用户请求,这样能够提高后端服务器的鲁棒性(健壮性)。

对于缓存,会有下面的几个疑问:
-缓存文件放在哪儿?
如何指定那些请求被缓存?
缓存的有效期是多久?
对于某些请求,是否可以不走缓存?
解决以上问题,nginx的缓存也就基本配置完成了。

缓存文件放在哪?

proxy_cache_path:Nginx使用该参数指定缓存位置。
proxy_cache:该参数为之前指定的缓存名称。
proxy_cache_path:有两个必填参数,
第一个参数为缓存目录。
第二个参数keys_zone指定缓存名称和占用内存空间的大小。

// An highlighted block
user www-data;
worker_processes auto; #表示服务器有几个内核就起几个work
pid /run/nginx.pid;  #进程编号

http {

  proxy_cache_path /data/nginx/cache keys_zone=one:10m max_size=10g;
  
  upstream wulin.cn {
    server 127.0.0.1:8881; # 第一台服务器
    server 127.0.0.1:8882; # 第二台服务器
    server 127.0.0.1:8883; # 第三台服务器
  }

  server {
    listen 80; # 监听80端口
    proxy_cache one; # 指定缓存配置
    server_name test.wulin.cn; # 自己的域名或者IP

    location / {
      proxy_pass    http://test.wulin.cn;
      proxy_set_header Host  $host;
      proxy_set_header X-Real-IP $remote_addr;
    }
  }
}

注: 示例中的10m是对内存中缓存内容元数据信息大小的限制,如果想限制缓存总量大小,需要用max_size参数。

如何指定哪些请求被缓存?

Nginx 默认会缓存所有get 和 head方法的请求结果,缓存的key默认使用请求字符串。

自定义key
例如 proxy_cache_key
h o s t host hostrequest_uri$cookie_user”;

指定请求至少被发送了多少次以上时才缓存,可以防止低频请求被缓存。
例如 proxy_cache_min_uses 5;

指定哪些方法的请求被缓存
例如 proxy_cache_methods GET HEAD POST;

// An highlighted block
user www-data;
worker_processes auto; #表示服务器有几个内核就起几个work
pid /run/nginx.pid;  #进程编号

http {

  proxy_cache_path /data/nginx/cache keys_zone=one:10m;
  
  upstream test.lazyfennec.cn {
    server 127.0.0.1:8881; # 第一台服务器
    server 127.0.0.1:8882; # 第二台服务器
    server 127.0.0.1:8883; # 第三台服务器
  }

  server {
    listen 80; # 监听80端口
    proxy_cache one; # 指定缓存配置
    server_name test.wukin.cn; # 自己的域名或者IP

    location / {
      proxy_pass    http://test.wulin.cn;
      proxy_set_header Host  $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_cache_key $host$request_uri$cookie_user; # 指定缓存key
    }
  }
}

缓存有效期

默认情况下,缓存内容是长期存留的,除非缓存的总量超出限制。可以指定缓存有效时间,例如:

响应状态码为 200 302 时, 10分钟有效
proxy_cache_valid 200 302 10m;

对应任何状态码,5分钟有效
proxy_cache_valid any 5m;

// An highlighted block
user www-data;
worker_processes auto; #表示服务器有几个内核就起几个work
pid /run/nginx.pid;  #进程编号

http {

  proxy_cache_path /data/nginx/cache keys_zone=one:10m;
  
  upstream test.wulin.cn {
    server 127.0.0.1:8881; # 第一台服务器
    server 127.0.0.1:8882; # 第二台服务器
    server 127.0.0.1:8883; # 第三台服务器
  }

  server {
    listen 80; # 监听80端口
    proxy_cache one; # 指定缓存配置
    server_name test.wulin.cn; # 自己的域名或者IP

    location / {
      proxy_pass    http://test.wulin.cn;
      proxy_set_header Host  $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_cache_valid 200 302 10m;
    }
  }
}

## 对于某些请求,是否可以不走缓存?
proxy_cache_bypass:该指令响应来自原始服务器而不是缓存。

例如proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;

如果任何一个参数值不为空,或者不等于0,nginx就不会查找缓存,直接进行代理转发。

```javascript
// An highlighted block
user www-data;
worker_processes auto; #表示服务器有几个内核就起几个work
pid /run/nginx.pid;  #进程编号

http {

  proxy_cache_path /data/nginx/cache keys_zone=one:10m;
  
  upstream test.wulin.cn {
    server 127.0.0.1:8881; # 第一台服务器
    server 127.0.0.1:8882; # 第二台服务器
    server 127.0.0.1:8883; # 第三台服务器
  }

  server {
    listen 80; # 监听80端口
    proxy_cache one; # 指定缓存配置
    server_name test.wulin.cn; # 自己的域名或者IP

    location / {
      proxy_pass    http://test.wulin.cn;
      proxy_set_header Host  $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; # 任意参数不为空则不走缓存
    }
  }
}

网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。

// An highlighted block
user www-data;
worker_processes auto; #表示服务器有几个内核就起几个work
pid /run/nginx.pid;  #进程编号

events {
  use epoll;
  worker_connections 65535;
}

http {

  proxy_cache_path /data/workspace/cache keys_zone=one:10m max_size=10g inactive=60m;
  proxy_cache_key "$scheme$request_method$request_uri";

  upstream origin.wulin.cn {
    server 127.0.0.1:9000;
  }
  
  server {
    listen 80; # 监听80端口
    proxy_cache one; # 指定缓存配置
    server_name test.wulin.cn; # 自己的域名或者IP

    location / {
      add_header X-proxy-Cache $upsteam_cache_status;

      include proxy_params;
      proxy_pass    http://origin.wulin.cn;
    }
  }

  server {
    listen 9000;
    root /data/workspace/nodejs/;
    index index.html index.htm;

    charset utf-8;
    include h5dp/basic.conf; # 引入外部的配置文件,即上边的图basic.conf

    location / {
      try_files $uri $uri/ = 404;
    }
  }
}
  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值