nginx 遇到的 502,500 错误 --【博文迁移】

浪子不回头ぞ 提交于 2020-01-19 21:32:07

nginx 配置经常会遇到 502 ,500 错误,
排查思路

  • 1,在 php.ini 文件中打开 display_errors = On, 这样500错误就会有提示

  • 2,检查 nginx 的配置 fastcgi.conf 文件的 防跨目录open_basedir 设置

  • 3,检查 php 的 php-fpm.conf 文件的 “listen=” 配置是否与虚拟主机一致

  • #####在ubuntu lnmp一键安装过程中,会自动开启防跨目录设置open_basedir, 具体会在vhost add添加过程中设置目录时候,会在项目目录下生成隐藏文件 .user.ini , 里面会自动设置open_basedir参数,在Thinkphp、CI、Laravel等框架下,网站目录一般是在public下,但是public下的程序要跨目录调用public上级目录下的文件,因为LNMP默认是不允许跨目录访问的,所以需要将防跨目录访问的设置去掉,参考 https://lnmp.org/faq/lnmp-vhost-add-howto.html#user.ini 进行设置,有时候这些框架类的程序也可能会提示500错误,也可能是这个问题引起的。

  • ####解决:

  • #####1,屏蔽掉 fastcgi_conf 文件 open_basedir,

  • 2,修改.user.ini文件中的open_basedir 目录到上一级, 或者删掉.user.ini文件 ,修改方法:
进入网站根目录 查看隐藏的.user.ini文件

ls -a                                
sudo chattr -i .user.ini      
sudo rm .user.ini                  删除

  • 第二个坑 — 上传网站程序

上传网站后建议执行:chown www:www -R /path/to/dir 对网站目录进行权限设置,/path/to/dir替换为你网站目录。
为了安全可以将一些不需要PHP运行的上传文件之类的目录去掉执行权限,

sudo chmod -R 775  项目文件名      ---  这个不起作用
chown www:www -R /path/to/dir       ---  官网这个起作用

源网站 https://lnmp.org/faq/lnmp-vhost-add-howto.html

参考:http://www.vpser.net/security/lnmp-remove-nginx-php-execute.html

参考
https://lnmp.org/faq.html – 常见问题(FAQ)
https://lnmp.org/faq/lnmp-vhost-add-howto.html#user.ini – LNMP添加、删除虚拟主机及伪静态使用教程

参考地址
https://lnmp.org/faq/lnmp-Nginx-502-Bad-Gateway.html

我的错误是第13条原因引起

排查了一晚上! 妈的~ 巴子!

根据 docker 的环境和自己的环境的对比!

php.ini中找了几处不同,也没有什么实质性区别

1,
Short_open_tag = 	Off.          ———   Short_open_tag = 	On
2,
disable_functions =                ———   disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
3,expose_php = Off.             ———————    expose_php = On
4,
max_input_time = 300          ————  max_input_time = 60
5,
memory_limit = 512M ——————  memory_limit = 128M
6,
error_log = /usr/local/php/var/log/php-ini.log ———无
7,
;cgi.fix_pathinfo=1     —————   cgi.fix_pathinfo=0

终于,检查 php-fpm.conf 文件时候发现了问题

php-fpm.conf .  — 目录 user/local/php/etc/php-fpm.conf 

listen = 127.0.0.1:9000.     ————  listen = /tmp/php-cgi.sock

pm = static           ——————   pm = dynamic

pm.max_children = 40. ——————   pm.max_children = 10

pm.start_servers = 5         ———       pm.start_servers = 2

pm.min_spare_servers = 5    —————   pm.min_spare_servers = 1
pm.max_spare_servers = 15     —————  pm.max_spare_servers = 6

pm.max_requests = 1000 ———— 无

request_terminate_timeout = 600。 ————  request_terminate_timeout = 100

request_slowlog_timeout = 5 ——   request_slowlog_timeout = 0

####nginx 重启:

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

###php-fpm重启:

/usr/local/php/sbin/php-fpm restart
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!