热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

架构期day20nginx与php的优化

Nginx优化一、静态资源优化1.静态资源2.静态资源缓存1.Etag:服务器上的文件唯一标示2.Last-Modified:服务器上的文件最

Nginx优化


一、静态资源优化


1.静态资源


2.静态资源缓存

1.Etag:服务器上的文件唯一标示
2.Last-Modified:服务器上的文件最后修改时间
3.Expires:文件缓存过期时间
4.Cache-Control:文件多久过期
5.If-None-Match:浏览器上的文件唯一标示
6.If-Modified-Since:浏览器上的文件最后修改时间

1)配置缓存过期时间

#语法
Syntax: expires [modified] time;expires epoch | max | off;
Default: expires off;
Context: http, server, location, if in location#配置
[root@web01 conf.d]# vim linux.cache.com.conf
server {listen 80;server_name linux.cache.com;location ~* \.(png|jpg|gif)$ {root /code/cache;expires 7d; # 此配置默认关闭了nginx 的 Expires 以及 Cache-Control ,这里打开是设置了 Expires 文件缓存7天,以及 Cache-Control 7天过期}
}
[root@web01 conf.d]# systemctl restart nginx
[root@web01 code]# mkdir /code/cache
[root@web01 code]# cd /code/cache
[root@web01 cache]# rz
[root@web01 cache]# ll
total 1868
-rw-r--r-- 1 root root 156617 Dec 7 08:54 1.jpg
-rw-r--r-- 1 root root 47542 Dec 7 08:54 2.jpg
[root@web01 cache]# chown -R www.www /code/cache/

2)配置不走缓存

1.使用无痕模式
2.开启浏览器上面的 Disable cache
3.配置nginx关闭缓存
[root@web01 conf.d]# vim linux.cache.com.conf
server {listen 80;server_name linux.cache.com;location ~* \.(png|jpg|gif)$ {root /code/cache;etag off; #关闭服务器上的文件唯一标示,浏览器于服务器的 etag 对不上,就不会走这个缓存。add_header Cache-Control no-cache; #请求头以及缓存关闭if_modified_since off; #不开启浏览器上的 If-Modified-Since 文件最后修改时间,所以和服务器的 If-Modified 对不上}
}

3.静态资源读取优化

1.`文件高效读取
#高效传输,上nginx访问数据,就只需要在用户空间(应用程序)内进行,不需要通过内核空间传回给用户空间(CPU,硬件等).
'配置在'`
/etc/nginx/nginx.conf`'的主配置文件里'
'在http层配置,默认为关闭,'`
sendfile on;`'为开启 '
Syntax: sendfile on | off;
Default: sendfile off;
Context: http, server, location, if in location2.`
文件高效传输
#将多个数据打个包,一次推送,大文件适合此配置,需要开启 sendfile
'配置在'`/etc/nginx/nginx.conf`'的主配置文件里'
'在http层配置,默认为关闭状态,'`tcp_nopush on;`'不过停老师说会变慢。。。'
Syntax: tcp_nopush on | off;
Default: tcp_nopush off;
Context: http, server, location3.`长连接
#开启长链接,这里的长链接是客户通过浏览器,访问服务器的网页。一次请求,可以有多次连接,在规定的时间内,可以不用建立TCP链接。
'配置在'`
/etc/nginx/nginx.conf`'的主配置文件里'
'在http层配置,默认为开启状态'
Syntax: keepalive_timeout timeout [header_timeout];
Default: keepalive_timeout 75s;
Context: http, server, location4.`
长连接传输
#来一条数据传输一条数据,需要开启 keepalive
'配置在'`/etc/nginx/nginx.conf`'的主配置文件里'
'在http层配置,默认为关闭状态,需要开启'`keepalive`',一般配这个'
Syntax: tcp_nodelay on | off;
Default: tcp_nodelay on;
Context: http, server, location5.`静态资源压缩
'静态资源压缩配置语法
#开启压缩
'
配置在'`
/etc/nginx/nginx.conf`'的主配置文件里'
'默认为关闭状态, '`
gzip on;`'为开启静态资源压缩,需要和他嵌套的语法配合才有用。
Syntax: gzip on | off;
Default: gzip off;
Context: http, server, location, if in location
#指定压缩静态文件的类型,可指定多个
'
最好配置在'`
/etc/nginx/nginx.conf`'的主配置文件里。与'`gzip on; gzip_http_version 1.1;`'配合。
'
表示需要进行压缩的文件类型。'`
gzip_types image/jpeg image/gif image/png;`',表示对此服务的,jpg,gif,png,进行压缩。'
Syntax: gzip_types mime-type ...;
Default: gzip_types text/html;
Context: http, server, location
#指定压缩的级别,压缩比例
'最好配置在'`
/etc/nginx/nginx.conf`'的主配置文件里。
'
'`
gzip_comp_level 5;`',开启的压缩的恩济为5.
Syntax: gzip_comp_level level;
Default: gzip_comp_level 1; #共1-9个级别,一般我们设置3-5
Context: http, server, location
#压缩后传输使用的协议
'
最好配置在'`
/etc/nginx/nginx.conf`'的主配置文件里。
'
gzip_http_version 1.1;'
Syntax: gzip_http_version 1.0 | 1.1;
Default:
Context: http, server, location## 珍贵的例子 --- r压缩配置
[root@web01 cache]# vim /etc/nginx/conf.d/linux.gzip.com.conf
server {listen 80;server_name linux.gzip.com;location ~* \.(png|jpg|gif)$ {root /code/cache;gzip on; #开启压缩gzip_types image/jpeg image/gif image/png; #指定压缩文件的类型gzip_comp_level 9; #指定压缩的级别,压缩比例gzip_http_version 1.1; #压缩后传输使用的协议}location ~* \.txt$ {root /code/cache;gzip on;gzip_types text/plain;gzip_comp_level 5;gzip_http_version 1.1;}
}`
``最后自己上传文件测试

二、防资源盗链


1.配置被盗连的网站

[root@web01 conf.d]# vim linux.beidaolian.com.conf
server {listen 80;server_name linux.beidaolian.com;location ~* \.(png|jpg|gif)$ {root /code;index index.html;}
}
[root@web01 ~]# systemctl restart nginx#准备站点和文件
[root@web01 conf.d]# echo "我是被盗连的机器" > /code/index.html
[root@web01 code]# ll /code/
-rw-r--r-- 1 www www 31962 Dec 14 09:37 404.jpg
-rw-r--r-- 1 www www 25 Dec 15 10:18 index.html

2.配置盗链的网站

[root@lb01 ~]# vim /etc/nginx/conf.d/linux.daolian.com.conf
server {listen 80;server_name linux.daolian.com;location ~* / {root /code;index index.html;}
}
[root@lb01 ~]# systemctl restart nginx#准备站点
[root@lb01 ~]# vim /code/index.html
<html><body><img src&#61;"http://linux.beidaolian.com/404.jpg"></body>
</html>

3.配置hosts访问测试

10.0.0.4 linux.daolian.com
10.0.0.7 linux.beidaolian.com#windows访问
http://linux.daolian.com/

4.配置防盗链

# 防盗链语法&#xff0c;
# 说白了就是判定&#xff0c;用户的请求&#xff0c;是否从自己的域名定位到这里。
Syntax: valid_referers none | blocked | server_names | string ...;
Default: —
Context: server, locationnone #nginx日志中referer部分为空
blocked #nginx日志中referer部分没有协议
server_names #nginx日志中referer部分为指定的域名
string #nginx日志中referer部分为指定的域名&#xff08;可以使用正则表达式&#xff09;&#96; 珍贵的例子
[root&#64;web01 conf.d]# vim linux.beidaolian.com.conf
server {listen 80;server_name linux.beidaolian.com;location / {root /code;index index.html;}location ~* \.jpg$ {root /code;valid_referers none blocked server_names; #开启防盗链模块&#xff0c;判断域名不上来着自己网站则重定向到500.后端错误。if ($invalid_referer) { return 500;}}
}

6.伪造请求头

#模拟请求头为 http://linux.daolian.com 访问图片
[root&#64;lb01 ~]# curl -e "http://linux.daolian.com" -I http://linux.beidaolian.com/404.jpg
HTTP/1.1 500 Internal Server Error
Server: nginx/1.18.0
Date: Tue, 15 Dec 2020 02:51:41 GMT
Content-Type: text/html; charset&#61;utf8
Content-Length: 177
Connection: close#模拟请求头为 http://linux.beidaolian.com 访问图片
[root&#64;lb01 ~]# curl -e "http://linux.beidaolian.com" -I http://linux.beidaolian.com/404.jpg
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Tue, 15 Dec 2020 02:52:24 GMT
Content-Type: image/jpeg
Content-Length: 31962
Last-Modified: Mon, 14 Dec 2020 01:37:29 GMT
Connection: keep-alive
ETag: "5fd6c1d9-7cda"
Accept-Ranges: bytes

7.允许多个域名盗链

[root&#64;web01 conf.d]# vim linux.beidaolian.com.conf
server {listen 80;server_name linux.beidaolian.com;location / {root /code;index index.html;}location ~* \.jpg$ {root /code;valid_referers none blocked server_names *.baidu.com;if ($invalid_referer) {return 500;}}
}[root&#64;lb01 ~]# curl -e "http://www.baidu.com" -I http://linux.beidaolian.com/404.jpg
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Tue, 15 Dec 2020 02:58:27 GMT
Content-Type: image/jpeg
Content-Length: 31962
Last-Modified: Mon, 14 Dec 2020 01:37:29 GMT
Connection: keep-alive
ETag: "5fd6c1d9-7cda"
Accept-Ranges: bytes

三、跨域访问


1.盗链和跨域的区别

盗链是由盗链的网站向被盗链的网站发起get请求获取内容跨域是由跨域的网站向被跨域的网站发起一个完整http请求&#xff0c;甚至是完全跳转

2.配置被跨域的网站

[root&#64;web01 conf.d]# vim linux.beikuayu.com.conf
server {listen 80;server_name linux.beikuayu.com;location / {root /code;index index.html;}
}#配置站点
[root&#64;web01 conf.d]# echo "被跨域" > /code/index.html

3.配置跨域网站

[root&#64;lb01 conf.d]# vim linux.kuayu.com.conf
server {listen 80;server_name linux.kuayu.com;location ~* / {root /code;index index.html;}
}#配置跨域的站点文件
[root&#64;lb01 conf.d]# vim /code/index.html
<html lang&#61;"en">
<head><meta charset&#61;"UTF-8" /><title>测试ajax和跨域访问</title><script src&#61;"http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
</head>
<script type&#61;"text/Javascript">
$(document).ready(function(){$.ajax({type: "GET",url: "http://linux.beikuayu.com",success: function(data) {alert("sucess 卧槽 卧槽 卧槽 成功了!!!");},error: function() {alert("fail!!,跨不过去啊&#xff0c;不让进去啊&#xff0c;只能蹭蹭!");}});
});
</script><body><h1>测试跨域访问</h1></body>
</html>

4.配置hosts测试

#windows的hosts
10.0.0.4 linux.kuayu.com
10.0.0.7 linux.beikuayu.com[root&#64;web01 conf.d]# vim /etc/hosts
10.0.0.4 linux.kuayu.com
10.0.0.7 linux.beikuayu.com[root&#64;lb01 conf.d]# vim /etc/hosts
10.0.0.4 linux.kuayu.com
10.0.0.7 linux.beikuayu.com

5.测试跨域访问


6.配置允许被跨域

[root&#64;web01 conf.d]# vim linux.beikuayu.com.conf
server {listen 80;server_name linux.beikuayu.com;location / {root /code;index index.html;#允许跨域的网站add_header Access-Control-Allow-Origin *;#允许跨域网站发起的请求类型add_header Access-Control-Allow-Methods &#39;GET,POST,PUT,DELETE,OPTIONS&#39;;}
}

四、nginx的CPU亲和


1.查看cpu状态

## 首先康康自己有多少CPU,只有ige那就算了吧。。。
[root&#64;web01 ~]# lscpu
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
NUMA node0 CPU(s): 0-3

2.修改nginx配置

[root&#64;web01 ~]# vim /etc/nginx/nginx.conf
worker_processes 4;[root&#64;web01 ~]# systemctl restart nginx

3.没有配置亲和的情况

[root&#64;web01 ~]# ps -eo pid,args,psr | grep [n]ginx7549 nginx: master process /usr/ 37550 nginx: worker process 27551 nginx: worker process 07552 nginx: worker process 17553 nginx: worker process 1

4.配置cpu亲和


1&#xff09;方式1

worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000;worker_processes 16;
worker_cpu_affinity 0000000000000001 0000000000000010 0000000000000100 0000000000001000 ...;

2&#xff09;方式2

worker_processes 2;
worker_cpu_affinity 0101 1010;

3&#xff09;方式3

&#39;表示&#39;&#96;nginx&#96;&#39;里的每个&#39;&#96;worker&#96;&#39;自动平均分配CPU。
worker_processes auto;
worker_cpu_affinity auto;[root&#64;web01 ~]# cat /etc/nginx/nginx.conf
---------------------------- &#96;核心模块&#96; ---------------------------
user www; #启动此进程的用户
worker_processes auto; # master给worker分配工作&#xff0c;worker的数量&#xff0c;与CPU的数量相关
worker_cpu_affinity auto; # 自动平均分配CPU。

5.配置CPU亲和后

[root&#64;web01 ~]# ps -eo pid,args,psr | grep [n]ginx7629 nginx: master process /usr/ 37630 nginx: worker process 07631 nginx: worker process 17632 nginx: worker process 27633 nginx: worker process 3

五、nginx通用优化文件


1.通用优化配置

[root&#64;nginx ~]# cat nginx.conf
user www; #nginx启动用户
worker_processes auto; #nginx工作进程数
worker_cpu_affinity auto; #开启CPU亲和
error_log /var/log/nginx/error.log warn; #错误日志&#xff0c;存放路径&#xff0c;记录日志的级别
pid /run/nginx.pid; #指定pid文件位置
worker_rlimit_nofile 35535; #指定nginx服务的最大打开文件数events {use epoll; #使用epoll网络模型worker_connections 10240; #worker工作进程的最大连接数
}http {include mime.types; #nginx能识别的文件类型default_type application/octet-stream; #nginx不识别的文件类型默认下载charset utf-8; #指定字符集log_format main &#39;$remote_addr - $remote_user [$time_local] "$request" &#39;&#39;$status $body_bytes_sent "$http_referer" &#39;&#39;"$http_user_agent" "$http_x_forwarded_for"&#39;; #配置日志格式access_log /var/log/nginx/access.log main #指定访问日志路径&#xff0c;调用日志的格式server_tokens off; #隐藏版本号client_max_body_size 200m; #上传文件大小限制sendfile on; #高效读取tcp_nopush on; #高效传输#tcp_nodelay on; #实时传输keepalive_timeout 65; #开启长连接gzip on; #开启压缩gzip_disable "MSIE [1-6]\."; #指定不压缩的浏览器gzip_http_version 1.1; #压缩后传输的协议gzip_comp_level 4; #压缩的级别gzip_buffers 16 8k; #压缩缓存gzip_min_length 1024; #开启压缩的最小值gzip_types text/plain text/css application/json application/x-Javascript text/xml application/xml application/xml&#43;rss text/Javascript image/jpeg; #压缩的文件类型include /etc/nginx/conf.d/*.conf; #包含的配置文件
}

2.nginx优化总结

1、CPU亲和、worker进程数、调整nginx进程打开的文件句柄数
2、使用Epool网络模型、调整每个worker进程的最大连接数
3、文件的高效读取sendfile、nopush
4、文件的传输实时性、nodealy
5、开启tcp长连接&#xff0c;以及长连接超时时间keepalive_timeout
6、开启文件传输压缩gzip
7、开启静态文件expires缓存
8、隐藏nginx版本号
9、禁止通过ip地址访问&#xff0c;禁止恶意域名解析&#xff0c;只允许域名访问
10、配置防盗链、以及跨域访问
11、防DDOS、cc攻击&#xff0c;限制单IP并发连接&#xff0c;以及http请求
12、优雅显示nginx错误页面
13、nginx加密传输https优化
14、nginx proxy_cache、fastcgi_cache、uwsgi_cache 代理缓存&#xff0c;第三方工具&#xff08;squid、varnish&#xff09;

六、PHP优化


1.配置PHP页面

[root&#64;web01 ~]# vim /etc/nginx/conf.d/php.conf
server {listen 80;server_name linux.phpserver.com;root /code/phpserver;index index.php;location ~* \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}#配置站点
[root&#64;web01 ~]# mkdir /code/phpserver
[root&#64;web01 ~]# vim /code/phpserver/index.php
<?phpphpinfo();

2.php.ini配置文件优化

&#96; 可以用 grep ^[a-z] 查看的PHP的配置。
[root&#64;web01 ~]# grep ^[a-z] /etc/php-fpm.d/www.conf
user &#61; mabaoguo
group &#61; mabaoguo
listen &#61; 127.0.0.1:9000
listen.allowed_clients &#61; 127.0.0.1
pm &#61; dynamic
pm.max_children &#61; 50
pm.start_servers &#61; 5
pm.min_spare_servers &#61; 5
pm.max_spare_servers &#61; 35
slowlog &#61; /var/log/php-fpm/www-slow.log
php_admin_value[error_log] &#61; /var/log/php-fpm/www-error.log
php_admin_flag[log_errors] &#61; on
php_value[session.save_handler] &#61; files
php_value[session.save_path] &#61; /var/lib/php/session
php_value[soap.wsdl_cache_dir] &#61; /var/lib/php/wsdlcache
#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#; Error handling and logging ;
#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;expose_php &#61; Off # 关闭php版本信息
display_error &#61; Off # 屏幕不显示错误日志&#xff08;开发环境可以开启 on&#xff09;
error_reporting &#61; E_ALL # 记录PHP的每个错误
log_errors &#61; On # 开启错误日志
error_log &#61; /var/log/php_error.log # 错误日志写入的位置&#xff08;程序处理代码时的错误&#xff09;
date.timezone &#61; Asia/Shanghai # 调整时区,默认PRC#;;;;;;;;;;;;;;;;
#; File Uploads ;
#;;;;;;;;;;;;;;;;
file_uploads &#61; On # 允许文件上传
upload_max_filesize &#61; 300M # 允许上传文件的最大大小
post_max_size &#61; 300M # 允许客户端单个POST请求发送的最大数据
max_file_uploads &#61; 20 # 允许同时上传的文件的最大数量
memory_limit &#61; 128M # 每个脚本执行最大内存

3.PHP危险函数

有时候为了安全我们需要禁掉一些PHP危险函数&#xff0c;整理如下需要的朋友可以参考下
phpinfo()
功能描述&#xff1a;输出 PHP 环境信息以及相关的模块、WEB 环境等信息。
危险等级&#xff1a;中passthru()
功能描述&#xff1a;允许执行一个外部程序并回显输出&#xff0c;类似于 exec()
危险等级&#xff1a;高exec()
功能描述&#xff1a;允许执行一个外部程序&#xff08;如 UNIX Shell 或 CMD 命令等&#xff09;。
危险等级&#xff1a;高system()
功能描述&#xff1a;允许执行一个外部程序并回显输出&#xff0c;类似于 passthru()
危险等级&#xff1a;高chroot()
功能描述&#xff1a;可改变当前 PHP 进程的工作根目录&#xff0c;仅当系统支持 CLI 模式
PHP 时才能工作&#xff0c;且该函数不适用于 Windows 系统。
危险等级&#xff1a;高scandir()
功能描述&#xff1a;列出指定路径中的文件和目录。
危险等级&#xff1a;中chgrp()
功能描述&#xff1a;改变文件或目录所属的用户组。
危险等级&#xff1a;高chown()
功能描述&#xff1a;改变文件或目录的所有者。
危险等级&#xff1a;高shell_exec()
功能描述&#xff1a;通过 Shell 执行命令&#xff0c;并将执行结果作为字符串返回。
危险等级&#xff1a;高proc_open()
功能描述&#xff1a;执行一个命令并打开文件指针用于读取以及写入。
危险等级&#xff1a;高proc_get_status()
功能描述&#xff1a;获取使用 proc_open() 所打开进程的信息。
危险等级&#xff1a;高error_log()
功能描述&#xff1a;将错误信息发送到指定位置&#xff08;文件&#xff09;。
安全备注&#xff1a;在某些版本的 PHP 中&#xff0c;可使用 error_log() 绕过 PHP safe mode&#xff0c;
执行任意命令。
危险等级&#xff1a;低ini_alter()
功能描述&#xff1a;是 ini_set() 函数的一个别名函数&#xff0c;功能与 ini_set() 相同。
具体参见 ini_set()
危险等级&#xff1a;高ini_set()
功能描述&#xff1a;可用于修改、设置 PHP 环境配置参数。
危险等级&#xff1a;高ini_restore()
功能描述&#xff1a;可用于恢复 PHP 环境配置参数到其初始值。
危险等级&#xff1a;高dl()
功能描述&#xff1a;在 PHP 进行运行过程当中&#xff08;而非启动时&#xff09;加载一个 PHP 外部模块。
危险等级&#xff1a;高pfsockopen()
功能描述&#xff1a;建立一个 Internet 或 UNIX 域的 socket 持久连接。
危险等级&#xff1a;高syslog()
功能描述&#xff1a;可调用 UNIX 系统的系统层 syslog() 函数。
危险等级&#xff1a;中readlink()
功能描述&#xff1a;返回符号连接指向的目标文件内容。
危险等级&#xff1a;中symlink()
功能描述&#xff1a;在 UNIX 系统中建立一个符号链接。
危险等级&#xff1a;高popen()
功能描述&#xff1a;可通过 popen() 的参数传递一条命令&#xff0c;并对 popen() 所打开的文件进行执行。
危险等级&#xff1a;高stream_socket_server()
功能描述&#xff1a;建立一个 Internet 或 UNIX 服务器连接。
危险等级&#xff1a;中putenv()
功能描述&#xff1a;用于在 PHP 运行时改变系统字符集环境。在低于 5.2.6 版本的 PHP 中&#xff0c;可利用该函数
修改系统字符集环境后&#xff0c;利用 sendmail 指令发送特殊参数执行系统 SHELL 命令。
危险等级&#xff1a;高#禁用方法如下&#xff1a;
打开/etc/php.ini文件&#xff0c;
查找到 disable_functions &#xff0c;添加需禁用的函数名&#xff0c;如下&#xff1a;
phpinfo,eval,passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,p

4.php-fpm服务配置


1&#xff09;php-fpm.conf配置优化

[root&#64;web02 ~]# vim /etc/php-fpm.conf
[global]
;pid &#61; /var/log/php-fpm/php-fpm.pid #pid文件存放的位置
;error_log &#61; /var/log/php-fpm/php-fpm.log #错误日志存放的位置&#xff08;启动时的日志&#xff09;
;log_level &#61; error #日志级别, alert, error, warning, notice, debug
rlimit_files &#61; 65535 #php-fpm进程能打开的文件句柄数
;events.mechanism &#61; epoll #使用epoll事件模型处理请求
include&#61;/etc/php-fpm.d/*.conf

2&#xff09;包含配置文件优化 /etc/php-fpm.d/*.conf

[root&#64;web02 ~]# vim /etc/php-fpm.d/www.conf
[www] #池名称
user &#61; www #进程运行的用户
group &#61; www #进程运行的组
;listen &#61; /dev/shm/php-fpm.sock #监听在本地socket文件
listen &#61; 127.0.0.1:9000 #监听在本地tcp的9000端口
;listen.allowed_clients &#61; 127.0.0.1 #允许访问FastCGI进程的IP&#xff0c;any不限制
pm &#61; dynamic #管理方式&#xff08;dynamic为动态&#xff0c;static为静态&#xff09;
pm.max_children &#61; 512 #最大启动的php-fpm进程数&#xff08;静态管理&#xff0c;配置dynamic时失效&#xff09;
pm.start_servers &#61; 32 #动态方式下的起始php-fpm进程数量。
pm.min_spare_servers &#61; 32 #动态方式下的最小php-fpm进程数量。
pm.max_spare_servers &#61; 64 #动态方式下的最大php-fpm进程数量。
pm.max_requests &#61; 1500 #达到这个请求数&#xff0c;子进程会重启&#xff0c;如果是0那就一直接受请求
pm.process_idle_timeout &#61; 15s; #没有请求时多久释放一个进程
pm.status_path &#61; /php_status #开启php的状态页面php_flag[display_errors] &#61; off
php_admin_value[error_log] &#61; /var/log/phpfpm_error.log
php_admin_flag[log_errors] &#61; on
request_slowlog_timeout &#61; 5s #php脚本执行超过5s的文件
slowlog &#61; /var/log/php_slow.log #记录至该文件中

5.php状态页


1&#xff09;配置php

[root&#64;web02 ~]# vim /etc/php-fpm.d/www.conf
pm.status_path &#61; /php_status #开启php的状态页面[root&#64;web02 ~]# systemctl restart php-fpm

2&#xff09;配置nginx

[root&#64;web02 ~]# cat /etc/nginx/conf.d/php.conf
server {listen 80;server_name linux.php.com;root /code/php;index index.php;location ~* \.php$ {fastcgi_pass 127.0.0.1:9000;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}location /status {stub_status;}location /php_status {fastcgi_pass 127.0.0.1:9000;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}

3&#xff09;访问页面

#访问 http://linux.php.com/php_status
pool: www #池名称
process manager: dynamic #动态管理
start time: 14/Sep/2020:18:52:12 &#43;0800 #启动时间
start since: 14 #启动了多久
accepted conn: 1 #连接数
listen queue: 0 #等待队列
max listen queue: 0 #最大等待队列
listen queue len: 511 #等待队列长度
idle processes: 4 #空闲的进程数
active processes: 1 #活跃的进程数
total processes: 5 #总的进程数
max active processes: 1 #最大的活跃进程数
max children reached: 0 #进程最大的限制连接数
slow requests: 0 #慢查询

推荐阅读
author-avatar
jgfujfuf
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有