一、nginx的502错误
lnmp中错误率相当高的一种,使用curl或者浏览器访问时显示"502 Bad Getway",我总结了三条解决方法,但是可能还有其他原因造成。
解决方法:
1.配置错误引起
因为我们的nginx是通过php的fastcgi进行连接的,所以在nginx的虚机主机配置文件中有一个地方和php的配置文件是必须设置成一样的。在lnmp中有两种监听方式:(1)tcp/ip方式(2)socket方式
在/usr/local/nginx/conf/vhosts/XX.conf配置中,有一个fastcgi_pass值,这里的值必须要和/usr/local/php/etc/php-fpm.conf里面listen一样。(fastcgi_pass要根据php-fpm.conf的listen监听一样)
XX.conf配置:
location ~ \.php$ {
include fastcgi_params;
# fastcgi_pass unix:/tmp/php-fcgi.sock;
fastcgi_pass 127.0.0.1:9000;
php-fpm.conf配置
error_log = /usr/local/php/var/log/php-fpm.log
[www]
#listen = /tmp/php-fcgi.sock
listen = 127.0.0.1:9000
2.用户权限问题
因为我们的nginx的工作进程的属主属组是nobody
[root@centos-6 logs]# ps aux |grep nginx
root 5128 0.0 0.1 25016 1500 ? Ss Nov20 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody 7420 0.0 0.3 26848 3528 ? S 05:42 0:01 nginx: worker process
nobody 7421 0.0 0.4 27196 4164 ? S 05:42 0:00 nginx: worker process
需要在php-fpm.conf配置中添加nobody的监听属主属组
error_log = /usr/local/php/var/log/php-fpm.log
[www]
#listen = /tmp/php-fcgi.sock
listen = 127.0.0.1:9000
listen.owner = nobody
listen.group = nobody
3.资源耗尽导致
在lnmp架构中,我们的nginx服务是直接调用php-fpm服务的fastcgi,如果nginx的请求量很高时,而我们给php-fpm的子进程(子进程可以在php-fpm.conf中设置)又很少,总有一天php-fpm的资源被耗尽,那么nginx就会找不到php-fpm的子进程。
这个时候我们需要到php-fpm.conf调整pm_max_chilren(php-fpm最大启动多少个子进程)数值,但是也不能无限制的增加,毕竟服务器资源有限。查询资料后,是4G的服务器,如果只跑nginx服务和php-fpm服务,不跑mysql服务,可以设置150,如果是8G服务器可以设置300,以此类推。
502错误原因可能还有其他的,不再列举。
#####################################################################################################
二、nginx的错误日志级别
nginx的错误日志路径:/usr/local/nginx/logs/nginx_error.log (错误日志路径可以在nginx.conf下自定义)
php的错误日志路径:/usr/local/php/var/log/php-fpm.log (日志可以在php-fpm.conf下自定义)
nginx的错误日志记录有6个级别:debug, info, notice, warn, error, crit ,默认是crit,
需要在nginx的nginx.conf里面修改