Nginx 报错调试思路

提出问题

nginx 报出 502 bad gate way 错误


分析问题

  1. 一般来说 nginx 报的错不是 nginx 自身的原因,而且就算是 nginx 自身的原因,也能从日志中看到错误原因,所以查看 nginx 的错误日志就可以了。
  2. 查 nginx 报错日志
    • 这里一般错误日志内容都会是因为 php 版本升级到7之后 php-fpm 换成了 php-fpm7.0 造成的
    • 2016/09/13 15:23:40
    • [crit] 1387#1387: *3 connect() to
    • unix:/var/run/php5-fpm.sock failed (2: No such file or directory)
    • while connecting to upstream, client: 10.0.2.2, server: homestead.app,
    • request: "GET / HTTP/1.1",
    • upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "127.0.0.1:8000"
  3. 日志说明 nginx 在请求 php5-fpm 失败了,并且给出了请求地址。
  4. 查找日志中给出的地址,发现并没有 php5-fpm.sock 这个文件。
  5. 查看 php-fpm 的配置文件(/etc/php/7.0/fpm/pool.d/www.conf),发现有这么一句话:`listen = /run/php/php7.0-fpm.sock`
  6. 所以 php-fpm 使用的是7.0的套接字文件

解决问题

  1. 要解决这个问题,就得修改 nginx 的虚拟主机配置文件 homestead 的配置文件在这个路径:/etc/nginx/sites-available/homestead.app 将 fastcgi 配置项改成如下代码:
  2. fastcgi_pass unix:/run/php/php7.0-fpm.sock;

  3. 修改文件之后不要忘记重启 nginx -s reload

总结

  1. nginx报错,查看nginx日志排错
  2. nginx报502 bad gate way一般是因为没有配置好php-fpm
  3. 修改nginx或者php-fpm配置文件之后重启生效