我有一个在Nginx服务器上的Drupal 7中build立的网站。 每当我编辑任何内容并按保存,或者当我login到网站,或者当我改变一些configuration,我得到一个白屏幕与消息“502错误的网关”几次。 只有在login并保存更改时,才会向匿名访问者显示错误。 我做什么样的改变似乎并不重要。 我可以按下浏览器中的后退button,这会将我带回编辑屏幕,然后再次按保存,并成功保存更改。
这个错误今天上午在08:09再次发生,所以我看着PHP日志:
2016/10/20 08:09:00 [error] 20703#20703: *3297348 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 195.198.76.66, server: www.example.com, request: "POST /node/88/edit HTTP/1.1", upstream: "fastcgi://unix:/run/php/php-fpm.sock:", host: "www.example.com", referrer: "http://www.example.com/node/88/edit"
这是在同一时间的nginx日志:
[20-Oct-2016 08:09:00] WARNING: [pool www0] child 10909, script '/srv/www/example/public_html/index.php' (request: "POST /index.php") execution timed out (8189.954999 sec), terminating [20-Oct-2016 08:09:00] WARNING: [pool www0] child 10909 exited on signal 15 (SIGTERM) after 19080.476683 seconds from start [20-Oct-2016 08:09:00] NOTICE: [pool www0] child 13002 started
任何人都可以看到这里发生了什么?
我用nginx&php-fmp设置了一个HTTP 502问题。 看来,许多超时和限制必须根据数据传输时间进行修改。 在这种情况下发生的事情是保活超时太短。
以下是一些可能有助于解决502问题的设置:
keepalive_timeout sites-available文件夹中)中:
send_timeout fastcgi_connect_timeout fastcgi_send_timeout fastcgi_read_timeout php.ini :
max_execution_time max_input_time 问题的真正来源可以是这些设置中的任何一个。
这将是值得检查您的Drupal日志的任何进一步的信息。 这听起来像你有一个模块触发一个脚本,花费很长时间才能完成。 鉴于当你以pipe理员身份login时发生这种情况,可能需要很长时间才能完成。
尝试手动触发cron来查看是否发生错误,然后检查drupal / nginx日志。
你可以在你的php.iniconfiguration文件中修改php-fpm的max_execution_time值,虽然这可能只是掩盖了这个问题,并且作为一个快速修复工具。 你最好find在Drupal发生的问题,并尝试解决这个问题。
每当我用nginx遇到502的时候–90%的时间是用php-fpm做的
尝试重现这个问题 – 尾巴php-fpm日志,看看你是否需要调整一些东西。