单位做网站注意什么问题,广西百度seo,微信商城搭建,做网站哪家好 青岛一、nginx和php-fpm连接超时的相关配置 线上的PHP服务器架构大都是nginx proxy-nginx web-php-fpm。在服务器运行正常#xff0c;服务器之间的连接正常#xff0c;未被防火墙阻止的情况下#xff0c;对这种架构排查504报错时需要注意以下几个地方的参数。
1是nginx…一、nginx和php-fpm连接超时的相关配置 线上的PHP服务器架构大都是nginx proxy-nginx web-php-fpm。在服务器运行正常服务器之间的连接正常未被防火墙阻止的情况下对这种架构排查504报错时需要注意以下几个地方的参数。
1是nginx proxy服务器中nginx.conf配置文件里的三项proxy..timeout配置。 此配置表示proxy向上游请求时的超时时间,s为秒。
proxy_connect_timeout 30s; #nginx连接上游的proxy的超时时间 proxy_send_timeout 30s; #nginxt往上游proxy发送数据的超时时间 proxy_read_timeout 30s; #nginxt从上游proxy读取数据的超时时间
2是nginx web服务器中nginx.conf配置里的fastcgi..timeout超时配置 此配置表示nginx向上游php请求的超时时间,s为秒。
fastcgi_connect_timeout 30s; #nginx连接fastcgi的超时时间 fastcgi_send_timeout 30s; #nginx往fastcgi发送参数的超时时间 fastcgi_read_timeout 30s; #nginx从fastcig获取数据的超时时间
3是php-fpm配置中的request_terminate_timeout配置 此配置表示多少秒之后php-fpm会终止对应的php子进程。request_terminate_timeout。这个配置属于php-fpm控制的是一个request执行的最长时间超过这个时间worker进程将被killed。 request_terminate_timeout120s 在后端执行时间超过请求方的时间设定时间时请求方会主动断开连接后端服务器日志会记录499关于499的报错这里不再展开之前也有篇文章 nginx出现499错误码的原因以及proxy_ignore_client_abort配置 及 nginx日志配置变量大全意义详解_nginx 499-CSDN博客 服务端可以通过设置proxy_ignore_client_abort on来忽略客户端中断请求从而不再记录499日志改为200但这样只是让表象上看起来请求正常前端还是请求超时了的。 在解决服务器超时的问题时首先按照上面的这些配置项去逐一排查如果一切没问题直接请求服务器时理论是OK的了这时如果再有超时问题需要排查域名解析到你的服务器的中间环节会不会有超时设置问题比如CDN上的回源请求超时等待时间以及其它的中间负载均衡出的问题。
二、Nginx中的try_files以及root、alias的使用 nginx的try_files基本是nginx配置中必定用到的一个命令但如果没有深入了解也许你就只知道默认配置文件中的那行代码就是尝试请求一下uri,然后如果没有找到就转到程序框架的入口文件上。try_files的作用域在server、location其语法如下:
#语法1一直寻找文件找不到定义的uri上。
try_files file ... uri
#语法2一直寻找文件找不到就返回一个状态码
try_files file ... code
#示例
index index.html index.php;
try_files $uri /cache/ /data/files/ $uri /app.php;
try_files $uri /cache/ /data/files/ $uri 404; 如上示例中我们向服务端发送一个请求拿程序生成的一个图片/makejpg/102.jpg它将先检查WEB目录 下/makejpg/102.jpg图片文件是否存在 如果不存在检测设定的root下/cache/makejpg/102.jpg 之后没有再请求root下 /data/files/makejpg/102.jpg 最后没有的话就去请求/app.php去生成102.jpg这么一张图片。下面一个请求如果是静态服务器则没找到就直接返回404了。 try_files除了上述在此服务器寻找文件以及找到请求处理之外也可以直接重定向其它的location其它的location就可以自由配置处理了甚至可以转发到upstream请求纯缓存服务器配置这种比较合适即所有的数据都是后端生成的经过一次就缓存下来如果缓存失效就去后端拿数据。有点CDN的感觉。
location ^~ /images/ {root /image/cache/;try_files $uri image_backend;
}
location image_backend {proxy_pass http://192.168.1.10:80;
} 最后上面提到的try_files查找路径的事情nginx中对路径的指令有root和aliasroot会持续继成在location中匹配后会将匹配的location中的root路径替换访问url的host从而得到文件的真实地址。而alise它不会替换匹配后的url地址而是替换匹配部分的url。alias指令也可以有多个有些配置中使用alias会省不少事示例如下
#请求http://47.3.3.36/mobile/index.php - /home/wwwroot/mobile/index.php
location /mobile/ {root /home/wwwroot/
}#请求http://47.3.3.36/mobile/index.php - /home/wwwroot/mobile/index.php
location /mobile/ {alias /home/wwwroot/mobile/
}