企业高性能web服务器知识点合集

news2024/11/16 1:48:16

文章目录

  • nginx
    • 源码编译安装
    • 平滑升级及版本回滚
      • 平滑升级
      • 版本回滚
    • 服务启动脚本
    • 核心配置
      • 全局配置参数优化调整
      • root与alias
      • 自定义错误日志
      • 自定义错误页面
      • 检测文件是否存在
      • 长链接配置
      • 下载服务器的配置
    • nginx高级配置
      • nginx状态页面
      • 压缩功能
      • 变量
        • 内置变量
        • 自定义变量
    • nginx rewrite
      • 指令
        • if指令
        • set指令
        • break指令
        • return指令
      • rewrite指令
        • rewrite flag
          • 域名永久重定向、临时重定向
          • break与last
      • nginx防盗链
        • 实现盗链
        • 实现防盗链
    • nginx反向代理
      • 实现http反向代理
      • 反向代理实现负载均衡
  • FastCGI
    • php配置优化
    • php缓存模块
    • php高速缓存
    • php高速缓存

nginx

源码编译安装

1、解压
2、配置软件编译环境./configure

dnf install gcc pcre-devel zlib-devel openssl-devel -y

[root@nginx nginx-1.24.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --add-module=/root/echo-nginx-module-0.63 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module

3、生成makefile文件(重新makefile需要make clean)
4、编译(make)
5、makeinstall

#创建用户
[root@nginx ~]# useradd -s /sbin/nologin -M nginx

#启动nginx
[root@nginx nginx]# cd sbin/
[root@nginx sbin]# ./nginx
[root@nginx sbin]# ps -aux | grep nginx
root       39753  0.0  0.0   9864   932 ?        Ss   17:43   0:00 nginx: master process ./nginx
nginx      39754  0.0  0.1  13760  4820 ?        S    17:43   0:00 nginx: worker process
root       39756  0.0  0.0 221680  2484 pts/0    S+   17:43   0:00 grep --color=auto nginx
删除编译后的nginx
[root@nginx local]# rm -rf /usr/local/nginx/

删除Makefile  objs 文件
[root@nginx nginx-1.24.0]# make clean
rm -rf Makefile objs
[root@nginx nginx-1.24.0]# ls
auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  man  README  src
关闭debug
[root@nginx nginx-1.24.0]# vim auto/cc/gcc 
# debug
#CFLAGS="$CFLAGS -g"

编译环境
[root@nginx nginx-1.24.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module

make && make install

添加nginx命令执行路径到环境变量中
[root@nginx ~]# vim ~/.bash_profile 
export PATH=$PATH:/usr/local/nginx/sbin

[root@nginx ~]# source ~/.bash_profile

启动nginx
[root@nginx ~]# nginx

平滑升级及版本回滚

平滑升级

将nginx由1.24升级为1.26版本

1、解压1.26版本
[root@nginx ~]# tar -zxf nginx-1.26.1.tar.gz

2、编译新版本
[root@nginx nginx-1.26.1]# ./configure --prefix=/usr/local/nginx  --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module

3、make(无需make install)
[root@nginx nginx-1.26.1]# make

4、备份旧版本nginx
[root@nginx objs]# cd /usr/local/nginx/sbin/
[root@nginx sbin]# cp nginx nginx.24

5、拷贝新版本nginx
[root@nginx sbin]# \cp -f /root/nginx-1.26.1/objs/nginx /usr/local/nginx/sbin

6、平滑升级
kill -USR2 42814(nginx work ID)

7、回收旧版本
kill -WINCH 42814(nginx work ID)

image-20240815181836245

版本回滚

将nginx由1.26回滚到1.24

1、备份1.26版本,将1.24版本覆盖1.26版本
[root@nginx sbin]# cp nginx nginx.26
[root@nginx sbin]# ls
nginx  nginx.24  nginx.26

[root@nginx sbin]# \cp -f nginx.24 nginx

2、重新加载1.24的进程,回收1.26的
[root@nginx sbin]# kill -HUP 42813
[root@nginx sbin]# kill -WINCH 45972

image-20240815182419308

服务启动脚本

[root@nginx ~]#  vim /lib/systemd/system/nginx.service

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

[root@nginx ~]# systemctl daemon-reload
[root@nginx ~]# systemctl start nginx 

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

核心配置

全局配置参数优化调整

[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
user nginx;			#用户指定
#user  nobody;
worker_processes  auto;		#进程绑定
work_cpu_affinity 01 10;

events {
    worker_connections  100000;	#并发连接
}

[root@nginx ~]# vim /etc/security/limits.conf
*		-	nofile		100000

测试
[root@nginx ~]# sudo -u nginx ulimit -a
real-time non-blocking time  (microseconds, -R) unlimited
core file size              (blocks, -c) 0
data seg size               (kbytes, -d) unlimited
open files                          (-n) 100000

root与alias

#1、添加子配置模块
[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
include "/usr/local/nginx/conf.d/*.conf";
server {
        listen       80;
        server_name  localhost;
#2、创建文件目录
[root@nginx ~]#mkdir -p /www/web/test1
[root@nginx ~]#echo hahahah > /www/web/test1/index.html

#3、配置子文件
[root@nginx sbin]# cat /usr/local/nginx/conf.d/http1.conf 
server {
	listen 80;
	server_name www.abc.com;
	root /www/web;
	location /test1/ {
		root /www/web;
	}
	location /test2 {
		alias /www/web/test1;
	}
}
[root@nginx ~]#nginx -s reload

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

image-20240815202106087

自定义错误日志

access_log   文件地址
error_log   文件地址
注:文件地址需提前创建好

自定义错误页面

error_page code  文件地址
1、编辑配置文件
[root@nginx nginx-1.26.1]# cat /usr/local/nginx/conf.d/error.conf
server {
	listen 80;
	root /www/web;
	server_name var.nginx.com;
	error_page 500 502 503 /error.html;
	location = /error.html {
		root /www/web;
	}
}

2、编辑错误访问内容
[root@nginx nginx-1.26.1]# cat /www/web/error.html 
faile file

image-20240818175251586

检测文件是否存在

1、编辑子配置文件
try_files  $uri $uri.html $uri/index.html   /文件地址
2、创建文件地址并写入文件
注:写入的文件地址应从server下的root里的文件地址开始
[root@nginx conf.d]# cat user.conf 
server {
	listen 192.168.84.100:80;
	root /www/web;
	server_name www.abc.com;
	try_files $uri $uri.html $uri/index.html /error/default.html;
	location = /error.html {
		root /www/web/error;
	}
}
#创建文件地址并写入文件
[root@nginx conf.d]# echo error file > /www/web/error/default.html  #从root里的地址开始

image-20240816150039992

长链接配置

主配置文件(/usr/local/nginx/conf/nginx.conf)添加如下参数:
keepalive_timeout	  :长连接超时时长,0表示禁止连接
keepalive_requests    :长连接数请求发起数量

下载服务器的配置

1、制作下载文件
[root@nginx ~]# mkdir /www/web/download -p
[root@nginx ~]# dd if=/dev/zero of=/www/web/download/afile bs=1M count=100
记录了100+0 的读入
记录了100+0 的写出
104857600字节(105 MB,100 MiB)已复制,0.0514982 s,2.0 GB/s

2、配置文件参数
[root@nginx ~]# vim /usr/local/nginx/conf.d/user.conf
location /download {
		root /www/web;
		autoindex on;		#开启自动文件索引
		autoindex_localtime on;		#显示本机上传时间
		autoindex_exact_size off;	#计算文件大小
		limit_rate 2048k;		#限速2MB/s
	}

image-20240816152615105

nginx高级配置

nginx状态页面

基于nginx 模块 ngx_http_stub_status_module 实现,
在编译安装nginx的时候需要添加编译参数 --with-http_stub_status_module
否则配置完成之后监测会是提示法错误
配置实例:
[root@nginx conf.d]# cat status.conf 
server {
	listen 80;
	root /www/web;
	server_name var.nginx.com;
	location = /nginx.html {
		root /www/web;
		stub_status;
		allow 192.168.84.0/24;
		deny all;
	}
}

压缩功能

nginx对指定类型的文件进行压缩之后再传输给客户端,降低出口带宽的利用率,不会占用过多的CPU资源

配置指令:

1、准备压缩文件
[root@nginx ~]# cp /usr/local/nginx/logs/access.log /www/web/test.html
[root@nginx data]# du -sh /www/web/test.html 
4.0K	/www/web/test.html

2、编辑配置文件
[root@nginx ~]# cat /usr/local/nginx/conf.d/tar.conf 
server {
	listen 80;
	root /www/web;
	server_name var.nginx.com;
	location /test.html {
		gzip on;
		gzip_comp_level 5;		#压缩比例
		gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/gif image/png;		#压缩文件类型
		gzip_vary on;	#启动压缩首部报恩插入Accept-Ending
	}
}

3、测试结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

变量

内置变量
$remote_addr; #存放了客户端的地址,注意是客户端的公网IP

$args; #变量中存放了URL中的所有参数
#例如:https://search.jd.com/Search?keyword=手机&enc=utf-8
#返回结果为: keyword=手机&enc=utf-8

$is_args#如果有参数为? 否则为空

$document_root; #保存了针对当前资源的请求的系统根目录,例如:/webdata/nginx/timinglee.org/lee。

$document_uri;#保存了当前请求中不包含参数的URI,注意是不包含请求的指令
#比如:http://lee.timinglee.org/var?\id=11111会被定义为/var 
#返回结果为:/var

$host; #存放了请求的host名称

limit_rate 10240;
echo $limit_rate;#如果nginx服务器使用limit_rate配置了显示网络速率,则会显示,如果没有设置, 则显示0

$remote_port;#客户端请求Nginx服务器时随机打开的端口,这是每个客户端自己的端口

$remote_user;#已经经过Auth Basic Module验证的用户名

$request_body_file;#做反向代理时发给后端服务器的本地资源的名称

$request_method;示例:#请求资源的方式,GET/PUT/DELETE等

$request_filename;#当前请求的资源文件的磁盘路径,由root或alias指令与URI请求生成的文件绝对路径,
#如:webdata/nginx/timinglee.org/lee/var/index.html

$request_uri;
#包含请求参数的原始URI,不包含主机名,相当于:$document_uri?$args,
#例如:/main/index.do?id=20190221&partner=search 

$scheme;
#请求的协议,例如:http,https,ftp等

$server_protocol;
#保存了客户端请求资源使用的协议的版本,例如:HTTP/1.0,HTTP/1.1,HTTP/2.0等
自定义变量
设置变量:set  $变量名   值;
引用变量:echo  $变量名;

配置指令:

[root@nginx ~]# vim /usr/local/nginx/conf.d/vhosts.conf
server {
 listen 80;
 server_name lee.timinglee.org;
 root /webdata/nginx/timinglee.org/lee;
 location /var {
   default_type text/html;
   set $name timinglee;
   echo $name;
   set $web_port $server_port;
   echo $web_port;
 }
}

测试结果:

[root@client ~]# curl lee.timinglee.org/var
timinglee
80

nginx rewrite

指令

if指令
if (条件匹配) { 
 action
}
set指令
设置变量:set  $变量名   值;
引用变量:echo  $变量名;
break指令
break 中断当前作用域
return指令
return code; #返回给客户端指定的HTTP状态码
return code [text]; #返回给客户端的状态码及响应报文的实体内容
 					#可以调用变量,其中text如果有空格,需要用单或双引号
return code URL; #返回给客户端的URL地址

配置指令:

[root@nginx conf.d]# cat return.conf 
server {
	listen 80;
	root /www/web;
	server_name var.nginx.com;
	location /return {
    	 if ( !-e $request_filename ){
      		 return 301 http://www.baidu.com;
      		 #return 666 "$request_filename is not exist";
    	 }
     echo "$request_filename is exist";
  	 }
}

测试结果:

[root@client ~]# curl var.nginx.com/return
/www/web/return is exist
[root@client ~]# curl var.nginx.com/return1
/www/web/return1 is not exist

rewrite指令

rewrite flag
利用nginx的rewrite的指令,可以实现url的重新跳转,rewrite有四种不同的flag,分别是redirect(临时
重定向302)、permanent(永久重定向301)、break和last。其中前两种是跳转型的flag,后两种是代理型
跳转型指由客户端浏览器重新对新地址进行请求
代理型是在WEB服务器内部实现跳转
redirect;
#临时重定向,重写完成后以临时重定向方式直接返回重写后生成的新URL给客户端
#由客户端重新发起请求;使用相对路径,或者http://或https://开头,状态码:302
permanent;
#重写完成后以永久重定向方式直接返回重写后生成的新URL给客户端
#由客户端重新发起请求,状态码:301
break;
#重写完成后,停止对当前URL在当前location中后续的其它重写操作
#而后直接跳转至重写规则配置块之后的其它配置,结束循环,建议在location中使用
#适用于一个URL一次重写
last;
#重写完成后,停止对当前URI在当前location中后续的其它重写操作,
#而后对新的URL启动新一轮重写检查,不建议在location中使用
#适用于一个URL多次重写,要注意避免出现超过十次以及URL重写后返回错误的给用户
域名永久重定向、临时重定向

永久重定向301:

[root@nginx conf.d]# cat rewrite.conf 
server {
	listen 80;
	root /www/web;
	server_name var.nginx.com;
	index index.html;
	location / {
		#rewrite / http://var.nginx.com redirect;
		rewrite / http://var.nginx.com permanent;}
}

image-20240818193024941

临时重定向302:

[root@nginx conf.d]# cat rewrite.conf 
server {
	listen 80;
	root /www/web;
	server_name var.nginx.com;
	index index.html;
	location / {
		rewrite / http://var.nginx.com redirect;
		#rewrite / http://var.nginx.com permanent;
		}
}

image-20240818193221143

break与last
break:中断后续所有的loaction,只在当前的location内执行
last:执行完本location后寻找后续符合的location执行后输出
[root@centos8 ~]#cat /apps/nginx/conf.d/pc.conf 
server {
 listen 80;
 server_name lee.timinglee.org;
 root /webdata/nginx/timinglee.org/lee;
 location /break {
   root /webdata/nginx/timinglee.org/lee;
   rewrite ^/break/(.*) /test1/$1 last;
   rewrite ^/test1/(.*) /test2/$1 break;
 }
 location /last {
   root /webdata/nginx/timinglee.org/lee;
   rewrite ^/last/(.*) /test1/$1 last;
   rewrite ^/test1/(.*) /test2/$1 last;
 }
 location /test1 {
     default_type text/html;
     return 666 "new test1";
 }
 location /test2 {
   root /webdata/nginx/timinglee.org/lee;
 }
}

nginx防盗链

防盗链基于客户端携带的referer实现,referer是记录打开一个页面之前记录是从哪个页面跳转过来的标 记信息,如果别人只链接了自己网站图片或某个单独的资源,而不是打开了网站的整个页面,这就是盗 链,referer就是之前的那个网站域名

实现盗链
角色ip
nginx192.168.84.100被盗者
web192.168.84.150施盗者
#web相关配置
1、安装httpd软件
2、准备盗链web,盗取nginx的image/hah.jpg
[root@web1 ~]# cat /var/www/html/index.html 
<html>
  <head>
    <meta http-equiv=Content-Type content="text/html;charset=utf-8">
    <title>盗链</title>
</head>
  <body>
    <img src="http://var.nginx.com/hah.jpg" >
    <h1 style="color:red">欢迎大家</h1>
    <p><a href=http://var.nginx.comm>狂点</a>出门见喜</p>
  </body>
</html>

image-20240818201445881

image-20240818201502376

实现防盗链
在nginx上配置
[root@nginx ~]# cat /usr/local/nginx/conf.d/valid.conf
server {
 listen 80;
 server_name var.nginx.com;
 root /www/web;
 location /image {
   valid_referers none blocked server_names *.nginx.com ~\.baidu\.;
   if ($invalid_referer){
     #return 403;
     rewrite ^/ http://var.nginx.com/hah.jpg permanent;
   }
 }
}

nginx反向代理

image-20240818202340128

实现http反向代理

反向代理至web服务器

[root@nginx ~]# cat /usr/local/nginx/conf.d/valid.conf 
server {
 listen 80;
 server_name var.nginx.com;
 location / {
 	proxy_pass http://192.168.84.150:80;	#指定web服务器的ip
 }
}

指定location实现反向代理

[root@Nginx ~]# vim /usr/local/nginx/conf.d/vhost.conf
server {
 listen 80;
 server_name var.nginx.com;
 location / {
   proxy_pass http://192.168.84.150:80;
 }
 location ~ \.(png|jpg|gif) {
   proxy_pass http://192.168.84.160:8080;
 }
}

反向代理实现负载均衡

upstream name { 
 server .....
 ......
}

FastCGI

为什么会有FastCGI?

CGI协议虽然解决了语言解析器和 Web Server 之间通讯的问题,但是它的效率很低,因为 Web Server 每收到一个请求都会创建一个CGI进程,PHP解析器都会解析php.ini文件,初始化环境,请求结束的时候 再关闭进程,对于每一个创建的CGI进程都会执行这些操作,所以效率很低,而FastCGI是用来提高CGI性 能的,FastCGI每次处理完请求之后不会关闭掉进程,而是保留这个进程,使这个进程可以处理多个请 求。这样的话每个请求都不用再重新创建一个进程了,大大提升了处理效率。

什么是PHP-FPM?

PHP-FPM(FastCGI Process Manager: FastCGI进程管理器)是一个实现了Fastcgi的程序,并且提供进程管理的功能。 进程包括master进程和worker进程。master进程只有一个,负责监听端口,接受来自web server 的请求 worker进程一般会有多个,每个进程中会嵌入一个PHP解析器,进行PHP代码的处理。

源码编译nginx
1、上传模块压缩包后解压
2、删除原nginx,重新编译软件
./configure --prefix=/usr/local/nginx  --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module --add-module=/root/
3、make &&  make install
源码编译安装php
1、下载依赖
yum install -y bzip2 systemd-devel libxml2-devel sqlite-devel libpng-devel libcurl-devel oniguruma-devel

wget https://mirrors.aliyun.com/rockylinux/9.4/devel/x86_64/kickstart/Packages/o/oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm

dnf install -y  oniguruma-devel-6.9.6-1.el9.5.x86_64.rpm

2、源码编译php
./configure --prefix=/usr/local/php  --with-config-file-path=/usr/local/php/etc  --enable-fpm  --with-fpm-user=nginx  --with-fpm-group=nginx --with-curl --with-iconv --with-mhash  --with-zlib  --with-openssl  --enable-mysqlnd  --with-mysqli --with-pdo-mysql --disable-debug  --enable-sockets --enable-soap --enable-xml --enable-ftp --enable-gd --enable-exif --enable-mbstring --enable-bcmath --with-fpm-systemd   
注:缺少依赖的软件包yum仓库里没有的话

image-20240819130002010

php配置优化

[root@Nginx etc]# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
[root@Nginx etc]# vim php-fpm.conf
去掉注释pid = run/php-fpm.pid #指定pid文件存放位置


[root@Nginx ~]# cd /usr/local/php/etc/php-fpm.d/
[root@Nginx php-fpm.d]# cp www.conf.default www.conf

#生成主配置文件
[root@Nginx ~]# cp /root/php-8.3.9/php.ini-production /usr/local/php/etc/php.ini
[root@Nginx ~]# vim /usr/local/php/etc/php.ini
[Date]
; Defines the default timezone used by the date functions
; https://php.net/date.timezone
date.timezone = Asia/Shanghai #修改时区


#生成启动文件
[root@Nginx ~]# cd /root/php-8.3.9/
[root@Nginx php-8.3.9]# cp sapi/fpm/php-fpm.service /lib/systemd/system/
# Mounts the /usr, /boot, and /etc directories read-only for processes invoked by 
this unit.
#ProtectSystem=full   #注释掉
添加环境变量
[root@nginx php-8.3.9]# cat ~/.bash_profile 
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
	. ~/.bashrc
fi

# User specific environment and startup programs
export PATH=$PATH:/usr/local/nginx/sbin:/usr/local/php/bin:/usr/local/php/sbin
[root@nginx php-8.3.9]# systemctl daemon-reload 
[root@nginx php-8.3.9]# systemctl start php-fpm.service
编辑测试页
[root@nginx ~]# cat /usr/local/nginx/conf.d/vhost.conf 
server {
	listen 80;
	server_name var.nginx.com;
	root /data/php;
	index index.php;
	location ~ \.php$ {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		include fastcgi.conf;
	}	
}

[root@nginx ~]# cat /data/php/index.php 
<?php
phpinfo();
?>

[root@nginx ~]#nginx -s reload

image-20240819144849386

php缓存模块

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

安装mamcache:

[root@Nginx ~]# tar zxf memcache-8.2.tgz
[root@Nginx ~]# cd memcache-8.2/
[root@Nginx memcache-8.2]# yum install autoconf
[root@Nginx memcache-8.2]# phpize
[root@Nginx memcache-8.2]# ./configure && make && make install

复制测试文件至nginx访问目录:

[root@Nginx ~]# cd memcache-8.2/
[root@Nginx memcache-8.2]# ls
autom4te.cache config.log     configure.ac example.php Makefile.fragments 
README
build           config.m4     config.w32   include     Makefile.objects runtests.php
config9.m4
    config.nice   CREDITS       libtool     memcache.la         src
config.h       config.status docker       LICENSE     memcache.php       
tests
config.h.in     configure     Dockerfile   Makefile     modules
[root@Nginx memcache-8.2]# cp example.php memcache.php /data/php/
[root@Nginx ~]# vim /data/php/memcache.php
define('ADMIN_USERNAME','haha');   //账号
define('ADMIN_PASSWORD','123456');   // 密码
define('DATE_FORMAT','Y/m/d H:i:s');
define('GRAPH_SIZE',200);
define('MAX_ITEM_DUMP',50);
$MEMCACHE_SERVERS[] = 'localhost:11211'; // add more as an array
#$MEMCACHE_SERVERS[] = 'mymemcache-server2:11211'; // add more as an array

配置php加载memcached模块:

[root@Nginx ~]# vim /usr/local/php/etc/php.ini
;extension=zip
extension=memcache
;zend_extension=opcache

[root@Nginx ~]# systemctl reload php-fpm

[root@Nginx no-debug-non-zts-20230831]# php -m | grep mem
memcache

部署memcached:

[root@Nginx ~]# yum install memcached -y
[root@Nginx ~]# systemctl enable --now memcached.service

[root@Nginx ~]# netstat -antlupe | grep memcache
tcp       0     0 127.0.0.1:11211         0.0.0.0:*               LISTEN     
976       1037243   186762/memcached

[root@Nginx ~]# cat /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1,::1"

image-20240819152000601

image-20240819153439407

image-20240819152341308

php高速缓存

image-20240820095551615

借助srcache-nginx-module-0.33、memc-nginx-module-0.20两个模块来实现

[root@Nginx ~]#cat /usr/local/nginx/conf.d/php.conf
upstream memcache {
   server 127.0.0.1:11211;
   keepalive 512;
}
server {
 listen 80;
 server_name php.timinglee.org;
 root /data/php;
 location /memc {
   internal;
   memc_connect_timeout 100ms;
   memc_send_timeout 100ms;
   memc_read_timeout 100ms;
   set $memc_key $query_string; #使用内置变量$query_string来作为key
   set $memc_exptime 300; #缓存失效时间300秒
   memc_pass memcache;
 }
 location ~ \.php$ {
 set $key $uri$args; #设定key的值
   srcache_fetch GET /memc $key; #检测mem中是否有要访问的php
   srcache_store PUT /memc $key; #缓存为加载的php数据
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   include fastcgi.conf;
 }
}
[root@Nginx ~]# systemctl start nginx.service

image-20240819161154507

php高速缓存

[外链图片转存中…(img-aDDbZjCn-1724166746916)]

借助srcache-nginx-module-0.33、memc-nginx-module-0.20两个模块来实现

[root@Nginx ~]#cat /usr/local/nginx/conf.d/php.conf
upstream memcache {
   server 127.0.0.1:11211;
   keepalive 512;
}
server {
 listen 80;
 server_name php.timinglee.org;
 root /data/php;
 location /memc {
   internal;
   memc_connect_timeout 100ms;
   memc_send_timeout 100ms;
   memc_read_timeout 100ms;
   set $memc_key $query_string; #使用内置变量$query_string来作为key
   set $memc_exptime 300; #缓存失效时间300秒
   memc_pass memcache;
 }
 location ~ \.php$ {
 set $key $uri$args; #设定key的值
   srcache_fetch GET /memc $key; #检测mem中是否有要访问的php
   srcache_store PUT /memc $key; #缓存为加载的php数据
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   include fastcgi.conf;
 }
}
[root@Nginx ~]# systemctl start nginx.service

[外链图片转存中…(img-jFRkbeIb-1724166746916)]

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

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

相关文章

Prometheus 服务发现

1、基于文件的服务发现 基于文件的服务发现是仅仅略优于静态配置的服务发现方式&#xff0c;它不依赖于任何平台或第三方服务&#xff0c;因而也是最为简单和通用的实现方式。 Prometheus Server 会定期从文件中加载 Target 信息&#xff0c;文件可使用 YAML 和 JSON 格式&…

实战项目:自主HTTP服务器

0. 项目介绍 本项目实现的是一个HTTP服务器&#xff0c;项目中将会通过基本的网络套接字读取客户端发来的HTTP请求并进行分析&#xff0c;最终构建HTTP响应并返回给客户端完成了HTTP服务器后端的处理逻辑&#xff0c;主要完成的是GET和POST请求方法&#xff0c;以及CGI机制的搭…

深度学习设计模式之享元设计模式

文章目录 前言一、介绍二、特点三、详细介绍1.核心组成2.代码示例3.优缺点优点缺点 4.使用场景 总结 前言 享元设计模式主要用于减少创建对象的数量&#xff0c;以减少内存占用&#xff0c;提高性能。 一、介绍 享元设计模式&#xff08;Flyweight Pattern&#xff09;是一种…

c语言练习题1

1.输出Helloword /*输出Helloword*/ #include<stdio.h> int main() {printf("Hello word!");return 0; }2.整型变量的定义与使用 /*整型变量的定义与使用*/ #include <stdio.h> int main() {int a;int b;a 10;b 20;int c a b;int d a - b;printf(…

ETAS工具链自动化实战指南<一>

----自动化不仅是一种技术&#xff0c;更是一种思维方式&#xff0c;它将帮助我们在快节奏的工作环境中保持领先&#xff01; 目录 往期推荐 场景一&#xff1a;SWC 之间 port自动连接 命令示例 参数说明 场景二&#xff1a;SWC与ECU 自动映射 命令示例 参数说明 场景三&…

叉车刷卡系统,IC卡授权驾驶,提高叉车管理效率!

叉车作为仓储物流行业的主力军&#xff0c;长期占据着物流运输的主导地位。但由于厂区内叉车数量庞大&#xff0c;作为重型的特种设备&#xff0c;往往很容易发生碰撞事故。数量庞大且容易发生事故的叉车很难集中管理、叉车运输环境的复杂加之管理员不可能24小时全面监管工作。…

图表数据自动化软件有哪些?图表数据自动化怎么做

在数字化时代&#xff0c;数据的呈现方式越来越多样化&#xff0c;图表成为了表达复杂信息、数据趋势和分析结果的有效工具。然而&#xff0c;随着数据量的激增&#xff0c;手动创建和更新图表变得既耗时又低效。因此&#xff0c;图表数据自动化软件的应用变得尤为重要。这些软…

如何在没有密码的情况下解锁Oppo手机?5 种简单的方法

保护智能手机隐私的一种绝佳方法是设置复杂的锁屏密码或图案。一些OPPO手机的所有者在更改图案或密码后&#xff0c;在一夜之间失去了对其图案或密码的内存。事实上&#xff0c;OPPO用户遇到的众多问题包括忘记密码或锁定屏幕。遗憾的是&#xff0c;没有多少人知道无需密码即可…

在Chrome浏览器中安装JSON显示插件

步骤1&#xff1a; 在浏览器中打开https://github.com&#xff0c;在顶部的搜索栏中输入“chrome json”并开始搜索 输入关键字时&#xff0c;使用浏览器名称与“json”作为关键字&#xff0c;且中间使用空格进行分隔。 步骤2&#xff1a; 在搜索结果中选择第1个项目 在githu…

UE5用蓝图实现物体A始终朝向物体B |Find Look at Rotation|

非常常用的蓝图节点 |Find Look at Rotation|&#xff1a;获取 物体A 到 物体B 的Rotator。 Tick中将算出的Rotator设置给物体A&#xff0c;即可实现永远朝向物体B

IEEE |第五届机器学习与计算机应用国际学术会议(ICMLCA 2024)

第五届机器学习与计算机应用国际学术会议(ICMLCA 2024)定于2024年10月18-20日在中国杭州隆重举行。本届会议将主要关注机器学习和计算机应用面临的新的挑战问题和研究方向&#xff0c;着力反映国际机器学习和计算机应用相关技术研究的最新进展。 IEEE |第五届机器学习与计算机应…

喜报 | IDC中国Fintech50榜单正式发布!

IDC金融行业研究&#xff08;IDC Financial Insights&#xff09;团队以全球视角关注金融科技创新&#xff0c;并对金融科技厂商进行持续追踪。针对技术服务商的能力评估、比较优势分析以及市场份额等方面的研究是其中重要的组成部分。 基于研究报告以及行业用户的调研&#x…

Qt点亮开发板的一个LED-思维导图-学习笔记-基于正点原子阿尔法开发板

Qt点亮开发板的一个LED Qt如何操控开发板上的一个LED Qt与硬件控制的关系 Qt本身并不直接控制开发板上的硬件&#xff0c;而是通过中间层进行交互 驱动层的作用 驱动层是连接Qt应用层和硬件的关键部分&#xff0c;它提供了必要的接口和功能&#xff0c;使得Qt能够通过这些接…

2024局域网管理软件大盘点!哪款局域网软件好用?一文解答不容错过哦!

“不积跬步无以至千里&#xff0c;不积小流无以成江海。”在当今社会&#xff0c;每一项细微的技术进步都在推动着企业向前发展。 对于现代企业而言&#xff0c;高效管理局域网不仅能够提升工作效率&#xff0c;还能保障网络安全。这篇文章小编将为您盘点目前市场上优秀的局域…

星环科技×鼎捷软件强强联手,共建数智制造新引擎

近日&#xff0c;星环科技与鼎捷软件基于雅典娜新型工业互联网平台强强联手&#xff0c;围绕制造业普遍面临的生产计划、过程控制、成本管理等环节存在的经营痛点&#xff0c;以数据为核心打造工业互联网平台&#xff0c;从关键生产流程入手&#xff0c;建立了实时、系统、全面…

SSM老年人活动信息管理系统---附源码121730

目 录 摘要 1 绪论 1.1研究背景 1.2国内外研究现状 1.3系统开发技术的特色 1.4论文结构与章节安排 2 老年人活动信息管理系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.3.2数据修改流程 2.3.3数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 …

vue2表单校验:el-form表单绑定数组并使用rules进行校验

前言 vue项目中&#xff0c;大量使用element ui组件中的el-form来构建丰富且具有交互性的表单页面&#xff08;官网&#xff1a;Element - The worlds most popular Vue UI framework&#xff09;。el-form提供了丰富的表单控件&#xff0c;如输入框、下拉框、日期选择器等&am…

React原理之Fiber双缓冲

前置文章&#xff1a; React原理之 React 整体架构解读React原理之整体渲染流程React原理之Fiber详解 -----读懂这一篇需要对 React 整体架构和渲染流程有大致的概念 &#x1f60a;----- 在前面的文章中&#xff0c;简单介绍了 Fiber 架构&#xff0c;也了解了 Fiber 节点的…

Python功能强大且易于使用的命令行 shell库之xonsh使用详解

概要 Xonsh 是一种基于 Python 的跨平台、用户友好的命令行 shell。它结合了 Python 和传统 shell 命令的优势&#xff0c;允许用户在同一个环境中使用两者。Xonsh 为开发者和系统管理员提供了强大的工具&#xff0c;简化了任务自动化和脚本编写。本文将详细介绍 xonsh 库&…

基于php网上差旅费报销系统设计与实现

网上报销系统以LAMP(LinuxApacheMySQLPHP)作为平台,涉及到PHP语言、MySQL数据库、JavaScript语言、HTML语言。 2.1 PHP语言简介 PHP&#xff0c;一个嵌套的缩写名称&#xff0c;是英文 “超级文本预处理语言”&#xff08;PHP: Hypertext Preprocessor&#xff09;的缩写。P…