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

news2024/12/29 16:33:30

负载均衡案例

在这里插入图片描述

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;
    }
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1859484.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iptables(5)常用扩展模块iprange、string、time、connlimit、limit

简介 之前我们已经介绍过扩展模块的简单使用,比如使用-m tcp/udp ,-m multiport参数通过--dports,--sports可以设置连续和非连续的端口范围。那么我们如何匹配其他的一些参数呢,比如源地址范围,目的地址范围,时间范围等,这就是我们这篇文章介绍的内容。 iprange扩展模块…

Jmeter插件管理器,websocket协议,Jmeter连接数据库,测试报告的查看

目录 1、Jmeter插件管理器 1、Jmeter插件管理器用处:Jmeter发展并产生大量优秀的插件,比如取样器、性能监控的插件工具等。但要安装这些优秀的插件,需要先安装插件管理器。 2、插件的下载,从Availabale Plugins中选择&#xff…

服务器(Linux系统的使用)——自学习梳理

root表示用户名 后是机器的名字 ~表示文件夹,刚上来是默认的用户目录 ls -a 可以显示出隐藏的文件 蓝色的表示文件夹 白色的是文件 ll -a 查看详细信息 total表示所占磁盘总大小 一般以KB为单位 d开头表示文件夹 -代表文件 后面得三组rwx分别对应管理员用户-组…

VSCode创建并运行html页面(使用Live Server插件)

目录 一、参考博客二、安装Live Server插件三、新建html页面3.1 选择文件夹3.2 新建html文件3.3 快速生成html骨架 四、运行html页面 一、参考博客 https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/126610162 https://blog.csdn.net/m0_74014525/article/details/13…

设计模式5-策略模式(Strategy)

设计模式5-策略模式 简介目的定义结构策略模式的结构要点 举例说明1. 策略接口2. 具体策略类3. 上下文类4. 客户端代码 策略模式的反例没有使用策略模式的代码 对比分析 简介 策略模式也是属于组件协作模式一种。现代软件专业分工之后的第一个结果是框架语音应用程序的划分。组…

MATLAB-振动问题:单自由度无阻尼振动系统受迫振动

一、基本理论 二、MATLAB实现 令式(1.3)中A0 2,omega0 30,omega 40,matlab程序如下: clear; clc; close all;A0 2; omega0 30; omega 40; t 0:0.02:5; y A0 * sin( (omega0 - omega) * t /2) .* s…

【源码+文档+调试讲解】牙科就诊管理系统

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本牙科就诊管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

计算机网络 访问控制列表以及NAT

一、理论知识 1. 单臂路由 单臂路由是一种在路由器上配置多个子接口的方法,每个子接口代表不同的 VLAN,用于在一个物理接口上支持多 VLAN 通信。此方法使得不同 VLAN 之间可以通过路由器进行通信。 2. NAT (网络地址转换) NAT 是一种在私有网络和公共…

vue+three.js渲染3D模型

安装three.js: npm install three 页面部分代码&#xff1a; <div style"width: 100%; height: 300px; position: relative;"><div style"height: 200px; background-color: white; width: 100%; position: absolute; top: 0;"><div id&…

小阿轩yx-MySQL数据库管理

小阿轩yx-MySQL数据库管理 使用 MySQL 数据库 在服务器运维工作中不可或缺的 SQL &#xff08;结构化查询语句&#xff09;的四种类型 数据定义语言&#xff08;DDL&#xff09;&#xff1a;DROP&#xff08;删除&#xff09;、CREATE&#xff08;创建&#xff09;、ALTER&…

帝国cms定时审核并更新的方法

比如你网站采集了成千上万篇文章&#xff0c;不可能一下子全部放出来的&#xff0c;所以为了模拟人工发布&#xff0c;那么就需要定时审核发布文章内容&#xff0c;本文内容核心解决了更加个性化的逼真模拟人工更新网站内容。 第一&#xff1a;首先要满足你的表中有未审核的数据…

JavaWeb——MySQL:DML

目录 DML&#xff1a;添加&#xff0c;修改&#xff0c;删除表的数据&#xff1b; 1. 添加表的数据 1.1 给所有列添加数据 1.2 给指定列添加数据 1.3 批量添加信息 总结&#xff1a; DML&#xff1a;添加&#xff0c;修改&#xff0c;删除表的数据&#xff1b; 1. 添加表的…

cube-studio开源一站式机器学习平台,在线ide,jupyter,vscode,matlab,rstudio,ssh远程连接,tensorboard

全栈工程师开发手册 &#xff08;作者&#xff1a;栾鹏&#xff09; 一站式云原生机器学习平台 前言 开源地址&#xff1a;https://github.com/tencentmusic/cube-studio cube studio 腾讯开源的国内最热门的一站式机器学习mlops/大模型训练平台&#xff0c;支持多租户&…

微博默认按照最新时间排序

微博默认按照最新时间排序 目前微博会默认按照推荐顺序排序&#xff0c;如果你想要默认按照时间顺序排序的话&#xff0c;可以使用这个油猴脚本。 演示&#xff1a; 脚本安装地址 源代码地址 参考 本项目基于 vite-plugin-monkey 开发 菜单切换&#xff08;useOption&…

设计模式原则——单一职责原则(SPS)

设计模式原则 设计模式示例代码库地址&#xff1a; https://gitee.com/Jasonpupil/designPatterns 单一职责原则&#xff08;SPS&#xff09;&#xff1a; 又称单一功能原则&#xff0c;面向对象五个基本原则&#xff08;SOLID&#xff09;之一原则定义&#xff1a;一个类应…

深度学习工具jupyter创建并检测pytorch环境以及安装工具包

1. 前言 确保已经安装Python和anaconda&#xff08;anaconda一般自带jupyter&#xff09;。然后创建一个jupyter环境&#xff0c;查看启动后的new有没有环境选项。 如果遇到了EnvironmentLocationNotFound:Not such a environment。说明conda环境安装位置有问题&#xff0c;往…

Qt6 windows10下悬浮按钮栏实现

打王者荣耀的时候,你是否有看到中间的按钮是悬浮在屏幕的左右侧,以及中下位置,背景则是一个播放着视频的画面。 从程序的角度来看,它就是实现了一个悬浮按钮栏的功能。当然了,你也可以做成悬浮列表,悬浮下拉框,悬浮xxx等控件。 这里,我们实现在Windows的版本。手机版…

Vue45 scope

scope 限制css的作用范围 用法 <template><div class"demo"><h2 >学生姓名&#xff1a;{{name}}</h2><h2>学生性别&#xff1a;{{sex}}</h2></div> </template><script>export default {name:Student,data…

240624_昇思学习打卡-Day6-张量Tensor

240624_昇思学习打卡-Day6-张量Tensor 今儿扭头回来看看基础&#xff0c;看看最基本的数据结构&#xff0c;张量&#xff08;Tensor&#xff09;。 张量和数组、矩阵非常相似。是MindSpore网络运算中的基本数据结构&#xff0c;本文主要介绍张量和稀疏张量的属性及用法。 文章…

提示词绕过大模型安全限制

大模型安全绕过策略 简介 本文使用简单的提示词&#xff0c;可以在所有场景中实现针对某开源模型的安全策略绕过。 glm-4-9b-chat 的安全措施还有待完善。 上一代的6b比这一代的9B&#xff0c;要安全&#xff1b;上一代的6B大模型这一招没有用。 正常对话 若在下述正常互动…