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
来源:CSDN
作者:月入十万不是梦
链接:https://blog.csdn.net/weixin_46209016/article/details/104043417