502错误,让你进一步大白Nginx和PHP-FPM之间的相关
【新品产上线啦】51CTO播客,随时随地,碎片化进修
本日我就回首下其时碰着的一个502题目,以及最后的办理要领,各人也别鄙视这个502错误,充实领略很是须要,但愿通过这篇文章各人可以或许学到一些常识。 在我这个案例中,Nginx通过FastCGI协议毗连PHP-FPM(7.1),Nginx和PHP-FPM陈设在统一台呆板上,设置完成后,在赏识器中会见,报了一个 502 错误。 起首引用下百科对付 502 的先容:
它的意思就是Nginx没有获取到PHP-FPM的相应。 我其时处理赏罚的较量着急,花了好久的时刻,此处忽略各类的排查进程,先贴下最后正确的设置(和本次题目有关的)。 (1)nginx.conf:
(2)php-fpm.conf:
(3)pool.d/www.conf(PHP-FPM pool 设置文件):
再表明下 pool 设置文件,一样平常环境下,nginx 一个假造主机对应一个 php-fpm pool 文件,这样差异的 php-fpm 事变历程就断绝了,互不影响。 接下去先容办理进程: 1:在呈现 502 题目的时辰,调查 nginx 的 error.log 文件,会有以下报错:
着实说的已经很大白了,毗连 PHP-FPM 的时辰碰着了权限题目。 2:调查下 php 主历程的 error.log 发明 /var/log/fpm.log 文件没有任何的输出,查阅了官方资料,对付 error_log 这个指令表明的很是少。 我揣摩有两种浸染:
最后,php-fpm.conf 下的 error_log 指令在我看来没有任何的现适用处,假如读者有知道的,接待指导。 (3)定位题目 知道了nginx通过当地socket方法毗连php-fpm碰着权限题目,定位到了listen.owner和 listen.group指令。 发生题目的缘故起因就是nginx历程的属主和php-fpm属主权限纷歧样,在产生502题目的时辰,nginx属主是www-data,而listen.owner是www。把它们修改同等后,题目办理。 我们不禁要问,listen.owner和listen.group指令暗示什么?看官方的先容:
它们暗示php-fpm事变历程以unix socket和web处事器毗连的时辰,该socket的权限必需和web处事器的操纵(读取)权限同等。 读者或许大白了什么意思,那user和group这两个指令什么意思,为什么和listen.owner指令云云相像,官方是这么先容的:
表明的不是很清晰,现实上表白的是这个php-fpm历程自己权限(通过 ps aux | grep php-fpm就能进一步确认),假如php-fpm要转达错误数据给nginx,那么user和group的指令必需和nginx的user指令设置一样(往后会写文章声名)。 这也间接声名白,假如nginx的user指令和php-fpm事变历程的listen.user指令设置纷歧样,也不影响两者交互。只是在本机中,nginx和php-fpm假如要读取或操纵统一文件,必要设置同等,关于这一点但愿各人细心领会。 现实上最简朴的办理方案,就是通过tcp的方法毗连nginx和php-fpm(即www.conf 设置listen = 127.0.0.1:9000),这样不会有权限操纵的题目,但对付本机来说,socket毗连对比tcp毗连,速率上更有担保。 【编辑保举】
点赞 0 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |